1、构造函数的意义:(1)由于类的部分成员是私有的,若程序需要对其进行初始化,只有通过成员函数实现。(2)在声明对象时自动调用构造函数。
2、构造函数没有返回值,但不被声明为void,即没有声明类型。
3、每次创建类对象(甚至使用 new 动态分配内存时,C++都会使用构造函数)
4、无法使用对象来调用构造函数,在构造函数构造出对象之前,对象是不存在的。
5、用户没有自己定义构造函数,在声明对象时也会有默认的构造函数被调用。一旦声明构造函数后,编译器不再提供默认构造函数,需要自行提供,否则将编译出错。
6、构造函数可以重载,即可以同时拥有多个构造函数,根据调用匹配相应构造函数。
7、析构函数没有参数。
8、调用析构函数的时机由编译器决定,通常不在代码中显式调用。(1)静态型对象在程序结束时自动调用。(2)动态对象在代码块执行完时调用。(3)new创建对象会驻留在栈或自由存储区,使用delete释放内存时调用析构函数。
9、编译器也会提供默认析构函数(若程序员没有自己定义)。
10、如果对象持续到main函数结束,虽然依然会在main函数结束后调用析构函数,但在窗口环境中无法看到析构函数的输出。
11、两个对象之间赋值,不会调用构造函数。
12、当对象已经存在,再次调用构造函数重新赋值时,编译器是通过让构造函数创建一个新的、临时对象,然后将其内容复制非目标对象,随后调用析构函数删除临时对象。如stock = Stock(1),这个过程会调用一次构造函数,一次析构函数。
13、调用析构函数的顺序:先创建的后删除。
14、使用列表初始化野队调用相应的构造函数。
15、若构造函数只有一个参数,则将对象初始化为一个与该参数类型相同的值时,该构造函数将被调用。如:A a = 32;
16、默认构造函数可以没有参数,若有则必须给所有参数提供默认值。
17、构造函数中使用了new,则必须在析构函数中使用delete
18、声明对象数组时,数组中有多少个元素便会调用多少次默认构造函数。
19、初始化对象数组的方案是。首先使用默认构造杉树创建数组元素,然后大括号中的构造函数将创建临时对象,再将临时对象的内容复制到相应元素中。创建类对象数组,必须要有默认构造函数。如下程序段,共调用6次构造函数,6次析构函数。
Stock stocks[5] = {
Stock("aa", 1),
Stock(),
}
stock[2] = Stock("bb",2);20、定义位于类声明中的函数都将自动成为内联函数。等同于在类外实现使使用 inline修饰。
21、创建的每个新对象都有自己的存储空间,用于存储其内部变量和类成员;但同一个类的所有对象共享一组类方法,即每种方法只有一个副本。
22、类内闯将一个static常量,该常量与其他静态变量存储在一起,而不是存储在对象中。因此该static常量只有一个,被所有该类的对象共享。
23、重载运算符左边是调用对象,右边是传入参数。作为成员函数重载的运算符,左边必须是该类的对象。
24、友元函数在类内声明,无法通过类对象调用,定义时不加限定符和friend。类声明决定哪个函数是友元。将运算符重载为友元,运算符左边可以是其他类型。
25、重载 << 运算符,需要返回ostream的引用,可以使得cout连续输出。具体原因与cout机制有关,cout<<x<<y相当于 (cout << x )<<y,(cout<<x)返回值是ostream,才可以继续输出 y。
26、定义运算符时,必须选择重载的运算符作为成员函数还是友元函数中的一种格式
本文总结了C++中构造函数和析构函数的关键知识点,包括构造函数的意义、特点、调用时机,以及析构函数的自动调用、默认行为。此外,还探讨了对象赋值、析构顺序、内联函数、友元函数和运算符重载等相关概念,帮助读者深入理解C++类和对象的生命周期。
&spm=1001.2101.3001.5002&articleId=80036188&d=1&t=3&u=c48e0ec2c46d4e5994145a6a5c70f2e1)
3630

被折叠的 条评论
为什么被折叠?



