-
如果沒有自定義的析構(gòu)函數(shù)則系統(tǒng)自動生成
析構(gòu)函數(shù)在對象銷毀時自動調(diào)用
析構(gòu)函數(shù)沒有返回值、沒有參數(shù)也不能重載
查看全部 -
拷貝構(gòu)造函數(shù):類名(const 類名&變量名)&變量名可以省略
賦值和復(fù)制調(diào)用的都是類的拷貝構(gòu)造函數(shù)
如果沒有自定義的拷貝構(gòu)造函數(shù)則系統(tǒng)自動生成一個默認(rèn)的拷貝構(gòu)造函數(shù)
當(dāng)采用直接初始化或復(fù)制初始化實例化對象時系統(tǒng)自動調(diào)用拷貝構(gòu)造函數(shù)
構(gòu)造函數(shù)分為:無參構(gòu)造函數(shù)與有參構(gòu)造函數(shù)
無參構(gòu)造函數(shù)一定是默認(rèn)構(gòu)造函數(shù)
有參構(gòu)造函數(shù):參數(shù)帶默認(rèn)值+參數(shù)無默認(rèn)值
有參構(gòu)造函數(shù)的參數(shù)所有都帶默認(rèn)值則是默認(rèn)構(gòu)造函數(shù)
系統(tǒng)自動生成的函數(shù):普通構(gòu)造函數(shù),拷貝構(gòu)造函數(shù)。后+初始化列表
查看全部 -
初始化列表的特性:?
1、初始化列表先于構(gòu)造函數(shù)執(zhí)行?
2、初始化列表只能用于構(gòu)造函數(shù)?
3、初始化列表可以同時初始化多個數(shù)據(jù)成員
初始化列表存在的必要性:?
關(guān)于在構(gòu)造函數(shù)中賦值是不能被允許的,只能通過初始化列表的存在來初始化構(gòu)造函數(shù)的參數(shù)。例如有const的數(shù)據(jù)成員必須使用初始化列表進行初始化
查看全部 -
構(gòu)造函數(shù)的規(guī)則和特點:?
1、構(gòu)造函數(shù)在對象實例化時被自動調(diào)用(有且僅有一次);
?2、構(gòu)造函數(shù)與類同名;
?3、構(gòu)造函數(shù)沒有返回值(連 void 都不用寫);
?4、構(gòu)造函數(shù)可以有多個重載形式(遵循重載規(guī)則,參數(shù)個數(shù)、類型、調(diào)用順序不同等);?
5、即使有多個構(gòu)造函數(shù),實例化對象時僅用到一個構(gòu)造函數(shù);
查看全部 -
類的寫法一般是public寫在前面,private寫在后面?
2.建議定義私有成員時命名為 m_數(shù)據(jù)類型+成員名 如:string m_strName 以便區(qū)分?jǐn)?shù)據(jù)成員,知道數(shù)據(jù)成員是定義在類里面的 形參是_+成員名,如:void getName(string _name)?
3.只讀:初始化,只有g(shù)et函數(shù),不設(shè)置set函數(shù)。
查看全部 -
cin>>
用法1:輸入一個數(shù)字或字符
用法2:接收一個字符串,遇“空格”、“TAB”、“回車”就結(jié)束
cin.getline()
用法:接收一個字符串,可以接收空格并輸出
延伸:
1、cin.getline()實際上有三個參數(shù),cin.getline(接收字符串的變量,接收字符個數(shù),結(jié)束字符)
2、當(dāng)?shù)谌齻€參數(shù)省略時,系統(tǒng)默認(rèn)為'\0'
3、如果將例子中cin.getline()改為cin.getline(m,5,'a');當(dāng)輸入jlkjkljkl時輸出jklj,輸入jkaljkljkl時,輸出jkgetline()
用法:接收一個字符串,可以接收空格并輸出,需包“#include<string>”
注意的問題
1、cin.getline()屬于istream流,而getline()屬于string流,是不一樣的兩個函數(shù)
2、當(dāng)同時使用cin>>,getline()時,需要注意的是,在cin>>輸入流完成之后,getline()之前,需要通過
str="\n";
getline(cin,str);的方式將回車符作為輸入流cin以清除緩存,如果不這樣做的話,在控制臺上就不會出現(xiàn)getline()的輸入提示,而直接跳過,因為程序默認(rèn)地將之前的變量作為輸入流。
清空緩存還可以用這個while (getchar() != '\n');/*清空輸入流緩沖區(qū)的回車字符*/
查看全部 -
#include <iostream>
#include <string>
using namespace std;
/**
?* 定義類:Student
?* 數(shù)據(jù)成員:m_strName
?* 無參構(gòu)造函數(shù):Student()
?* 有參構(gòu)造函數(shù):Student(string _name)
?* 拷貝構(gòu)造函數(shù):Student(const Student& stu)
?* 析構(gòu)函數(shù):~Student()
?* 數(shù)據(jù)成員函數(shù):setName(string _name)、getName()
?*/
class Student
{
public:
Student() {
m_strName = " ";
}
Student(string _name) {
m_strName = _name;
}
Student(const Student& stu) {
cout << "Student(const Student& stu)" << endl;
}
~Student() {
cout << " ~Student()";
}
void setName(string _name) {
m_strName = _name;
}
string getName() {
return m_strName;
}
private:
string m_strName;
};
int main()
{
// 通過new方式實例化對象*stu
Student* stu = new Student();
// 更改對象的數(shù)據(jù)成員為“慕課網(wǎng)”
stu->setName("慕課網(wǎng)");
// 打印對象的數(shù)據(jù)成員
cout << stu->getName() << endl;
delete stu;
stu = NULL;
return 0;
}
查看全部 -
堆和棧的區(qū)分
查看全部 -
對象的生命歷程
查看全部 -
析構(gòu)函數(shù).
查看全部 -
析構(gòu)函數(shù).
查看全部 -
類的定義
1、關(guān)鍵字、類名
2、屬性、數(shù)據(jù)成員
3、方法、成員函數(shù)
查看全部 -
構(gòu)造函數(shù)可以賦默認(rèn)值查看全部
-
有參查看全部
-
五參構(gòu)造函數(shù)查看全部
舉報