直接上源碼:
Student::Student(int age, const char* name)
{
this->age = age;
int len = strlen(name) + 1;
this->name = new char[len]{0};
strcpy_s(this->name,len,name);
}
private:
int age = 0;
char* name = NULL;
需求:就是簡單的傳個(gè)字符串進(jìn)去瘪松,按需分配所需要的內(nèi)存。
思路:例如傳一個(gè)“王小明”的名字锨阿,const char* name指針形參宵睦,就得到一個(gè)“王小明”這個(gè)王字的首個(gè)元素地址,然后定義一個(gè)int類型變量墅诡,求出這個(gè)字符串有多長状飞,好分配內(nèi)存,strlen這是求字符串長度的函數(shù)书斜,+1是算上字符串結(jié)束符‘\0’, 之后new一個(gè)動態(tài)內(nèi)存诬辈,分配是什么數(shù)據(jù)類型,需要多大的內(nèi)存空間荐吉,分配動態(tài)內(nèi)存的時(shí)候最好順便初始化分配的內(nèi)存焙糟,如果不初始化的話,調(diào)試程序的時(shí)候會出現(xiàn)字符串中的字符無效样屠。這沒啥大問題穿撮,因?yàn)樽詈筮€要strcpy_s拷貝字符串一下直接把原來的分配內(nèi)存里隨機(jī)垃圾值給覆蓋掉缺脉。QQ截圖20220903161042.jpg
最后一定要在析構(gòu)函數(shù)里釋放內(nèi)存,防止內(nèi)存泄漏悦穿。
QQ截圖20220903195538.jpg