网易云课堂(Boolan)C++ 第二周笔记

1、关键字class与struct

    使用class与struct定义类的区别在于默认访问权限,class默认private,struct默认public。

定义在public之后的成员整个程序内可被访问。

定义在private之后的成员可以被类的成员函数访问,但不能被使用该类的代码访问(如需访问需定义友元)。

封装的益处:确保用户代码不会无意间破坏封装对象的状态,被封装的类的具体实现细节可以随时改变,而无需调整用户级别的代码。

2、拷贝构造、拷贝赋值、析构函数

    如果一个构造函数的第一个参数是自身类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。拷贝赋值与重载运算符类似,拷贝构造和拷贝赋值如果类未定义编译器会为它自动合成一个。

析构函数执行与构造函数相反的操作,是类的一个成员函数,名字由波浪号接类名构成。

在一个构造函数中,成员的初始化是在函数体执行之前完成的,且按照它们在类中出现的顺序进行初始化。在一个析构函数中,首先执行函数体,然后销毁成员,成员按初始化顺序的逆序销毁。

3、什么时候会调用析构函数

    无论何时一个对象被销毁,就会自动调用其析构函数:

变量在离开其作用域时被销毁。

当一个对象被销毁时,其成员被销毁。

容器(无论是标准库容器还是数组)被销毁时,其元素被销毁。

对于动态分配的对象,当对指向它的指针应用delete运算符时被销毁。

对于临时对象,当创建它的完整表达式结束时被销毁。

你可能感兴趣的:(网易云课堂(Boolan)C++ 第二周笔记)