首页 > 编程语言 > 详细

C++ Primer Plus 第十二章总结——类和动态内存分配

时间:2021-04-24 10:40:22      阅读:20      评论:0      收藏:0      [点我收藏+]

1.类声明只是描述如何分配内存,因此静态类成员不能在其中初始化,况且静态类成员是单独存储的(例外情况是const整数类型或枚举型)。单独的初始化语句需指出类型和作用域运算符,但无需使用关键字static。

2.删除对象不能自动释放指针成员指向的动态内存,创建对象也不能为指针成员自动分派动态内存。

3.特殊成员函数有:默认构造函数、默认析构函数、复制构造函数、赋值运算符、地址运算符。

4.生成对象副本时使用复制构造函数,如函数的按值传递和返回、临时对象的生成。默认的复制构造函数逐个复制非静态成员的值,为浅复制。如果类中包含使用new初始化的指针成员,则必须创建指针指向的内存副本,进行深复制。

5.赋值运算符进行深复制的注意点:若给自身赋值,应当直接返回;目标对象可能引用了以前分配的数据,应当先进行空间释放;函数返回目标对象的引用。

6.空指针的表示:C++98使用0或(void*)0或NULL。C++11使用nullptr。delete和delete []都可用于空指针。

7.静态类成员函数不属于对象,且无法使用this指针,只能使用静态类数据成员。

8.get(char*, int)读取空行,早期的版本中读取的字符串首字符为‘\0‘,而现在的版本将返回false。

9.delete不能与定位new运算符配合使用,使用定位new运算符创建的对象应显式调用析构函数,应与创建对象的顺序相反,晚创建的对象可能依赖于早创建的对象。

10.栈是先进后出的,队列是先进先出的。

11.嵌套的结构、类和枚举的作用域为整个类,若在公有部分声明,将可在外部使用作用域解析符来使用,若是私有部分,只能在类中使用。

12.只有构造函数能够使用初始化列表语法。const类成员和引用型类成员都必须使用这种语法,它们都是在声明时需要马上初始化的类型。初始化器格式为 memberName(value),用逗号分隔,位于参数列表的右括号之后,函数体左括号之前,前面带冒号。数据成员初始化的顺序与它们出现在类声明中的顺序相同。C++11的类内初始化与初始化列表等价,但初始化列表的值会覆盖类内初始化的值。

13.提供复制构造函数和赋值运算符,并声明为私有,可防止默认方法定义的滥用。

C++ Primer Plus 第十二章总结——类和动态内存分配

原文:https://www.cnblogs.com/aPaulWong/p/14696175.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!