C++:析构函数,构造函数,运算符重载

10_7面向对象

1. 面向对象编程语言四大特性:抽象 封装 继承 多态
2. this指针:指向本对象的指针,普通成员方法的第一个参数默认加上this指针,在普通成员方法内使用到普通成员的地方加上this指针,在调用成员方法的时候加上参数this指针,this指针为常量,不允许改变,编译时期加上this指针

3. 构造函数:对象调用函数的时候默认定义的函数,当对象进行构造的时候默认调用的成员方法。构造函数的函数名和类名一致,没有返回值。如果没有实现构造函数,系统会默认生成一个默认构造函数。
默认构造函数-除了this指针以外没有传递参数的构造函数,当自己实现构造函数之后,系统就不会再次生成默认构造函数了。
4. 析构函数:对象生存周期满了的时候自动调用的函数,先构造的函数后析构,后构造的函数先析构。析构函数如果没有自己实现,系统会默认生成,但是生成的析构函数没有任何作用,一旦自己实现,就不会再自动生成。
5. 拷贝构造函数:用一个已经存在的给另一个正在生成的对象初始化的时候自动调用的成员方法。如果没有自己实现,会自动生成一个浅拷贝的拷贝构造函数,如果自己实现,就不会生成(注意:指针类型防止内存泄露,浅拷贝可能会造成问题)
拷贝构造一定要传引用,防止死递归(person(const person &src))
引用不会构造
6. 运算符重载:等号运算符重载:当使用一个已存在的对象给另一个已存在的对象赋值时候自动调用的成员方法,如果自己不实现,就会自动生成一个浅拷贝的等号运算符重载函数,如果实现了,就不会自动生成
防止自赋值,防止内存泄漏,防止浅拷贝
7. 临时对象的生存周期只在当下语句,在当下栈帧上临时对象如果被引用,临时对象的生存周期就会被提升为和引用一致
Person p4 = 20;
//使用20生成临时对象,使用临时对象拷贝构造p4,析构临时对象
如果出现上述优化步骤,会被直接优化成构造p4

猜你喜欢

转载自blog.csdn.net/qq_48580892/article/details/120649791