-
初始化列表,會先于構造函數進行。
先執行初始化列表,再執行構造函數的代碼
初始化列表可以同時初始多個數據成員
查看全部 -
函數可以只生命不實現(語法也不會報錯),但不實現是不能使用該函數的
查看全部 -
棧上申請內存? Class object? 或者 Class object[20] 訪問方法或者屬性使用“.”操作符
對上申請內存使用指針 = new Class()或者[20]的方式,訪問方法或者屬性使用“->”操作符
查看全部 -
getline(cin,name);
查看全部 -
析構函數釋放掉堆中成員
查看全部 -
指針實例化一個對象,也可以實例化一個對象數組,如果是數組就需要【】
查看全部 -
析構函數,完整
#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();
? ? ?Student(string _name);
? ? ?Student(const Student &stu);
? ? ?~Student();
? ? ?void setName(string _name);
? ? ?string getName();
? ? ?
? ? ?private:
? ? ?string m_strName;
?};
Student::Student()
{
? ? cout<<"Student()"<<endl;
? ? m_strName ="jim";
}
Student::Student(string _name):m_strName(_name)
{
? ? cout<<"Student(string _name)"<<endl;
}
Student::Student(const Student &stu)
{
? ? cout<<"Student(const Student &stu)"<<endl;
? ? m_strName ="jack";
}
Student::~Student()
{
? ? cout<<"~Student()"<<endl;
}
void? Student::setName(string _name)
?{
? ? ?m_strName=_name;
?}
string Student::getName()
?{
? ? ?return m_strName;
?}
int main(void)
{
? ? // 通過new方式實例化對象*stu
? ? Student *stu = new Student();
? ? // 更改對象的數據成員為“慕課網”
? ? stu->setName("慕課網");
cout<<stu->getName()<<endl;
? ? // 打印對象的數據成員
Student stu1;
cout<<stu1.getName()<<endl;
Student stu2("marry");
cout<<stu2.getName()<<endl;
Student Stu3(stu1);
cout<<Stu3.getName()<<endl;
delete stu;
stu=NULL;
return 0;
}
查看全部 -
public 和private 都要小寫,然后加冒號
class 類內聲明函數時候不用 加入{} 否則后面定義會沖突
注意上下定義名稱是否一致
初始化列表 賦值參數 要用括號
Student::Student(string _name):m_strName(_name)
{
? ? cout<<"Student(string _name)"<<endl;
}
查看全部 -
void? Student::setName(string _name)
?{
? ? ?m_strName=_name;
?}
string Student::getName()
?{
? ? ?return m_strName;
?}
定義函數時候返回值要寫??!
查看全部 -
數據成員的
查看全部 -
擔心類名重名,可以在啟航篇定義命名空間,
查看全部 -
對象生命歷程
查看全部 -
析構函數的
查看全部 -
拷貝函數在參數傳遞時候也會自動調用
查看全部 -
構造函數總結
查看全部
舉報