-
初始化列表,会先于构造函数进行。
先执行初始化列表,再执行构造函数的代码
初始化列表可以同时初始多个数据成员
查看全部 -
函数可以只生命不实现(语法也不会报错),但不实现是不能使用该函数的
查看全部 -
栈上申请内存 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;
}
定义函数时候返回值要写!!
查看全部 -
数据成员的
查看全部 -
担心类名重名,可以在启航篇定义命名空间,
查看全部 -
对象生命历程
查看全部 -
析构函数的
查看全部 -
拷贝函数在参数传递时候也会自动调用
查看全部 -
构造函数总结
查看全部
举报