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