博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ primer 第十二章
阅读量:4036 次
发布时间:2019-05-24

本文共 1640 字,大约阅读时间需要 5 分钟。

1. 将const加在形参表之后,就可以将成员函数声明为常量。const成员函数不能改变所操作对象的数据成员。const必须同时出现在声明和定义中,跟static不同。

 

2. 在类内部定义的成员函数,将自动作为inline处理。

 

3. 因为只有当类定义体完成后才能定义类,因此类不能具有自身类型的数据成员。但是,只要类名出现就可以认为该类已声明,所以可以使用指向自身类型的指针或引用。

 

4. 如果成员函数需要返回对其自身类型对象的引用,可以使用this指针。

return *this;

 

5. 普通的非const成员函数中,this的类型是指向类类型的const指针,可以改变this所指向的值,但不能改变this所指向的地址。在const成员函数中,this的类型是指向const类类型对象的const指针,既不可以改变this所指向的值,也不可以改变this所指向的地址。

 

6. 可变数据成员mutable永远都不能为const,甚至当它是const对象的成员时也如此。因此,const成员函数可改变mutable成员。

 

7. 可以初始化const对象、引用类型对象和没有默认构造函数的类类型,而不能进行赋值。所以应该用必须使用【构造函数初始化列表】初始化const对象、引用类型、无默认构造函数的类类型。

 

8. 在构造函数初始化列表中,成员被初始化的顺序是按照它们被定义的顺序。第一个被定义的成员首先初始化。

 

9. 一个类只要定义了一个构造函数,编译器就不会在生成默认构造函数。每个构造函数都应该为每个内置或复合类型的成员提供初始化式。没有初始化内置或复合类型成员的构造函数,将使那些成员处于未定义的状态。

 

10. 类通常应该有一个默认构造函数。如果没有,那么有这些缺点:

<1> 该类不能用作动态分配数组的元素类型

<2> 该类用作静态分配数组的类型时。必须为每个元素提供显式的初始化式

<3> 对象保存该类类型对象的容器,比如vector,不能使用【只接受容器大小而没有同时提供元素初始化式】的构造函数。

 

11. 隐式类类型转换,例:

类Class A有一个【单实参】的构造函数A(string str);而有某个普通函数B(A a),需要传递一个A类型的实参,此时如果传递一个string类型,即B(str)。则会完成一次隐式类型转换,利用该构造函数,将string类型转换成Class A的一个对象。

 

如果想要防止隐式类型转换,可以使用explicit关键字,在本例中是explicit A (string a);

explicit关键字只能用于类内部的构造函数声明上,在类外进行定义时不再重复它。

通常,单形参构造函数应该是explicit,可以避免错误。

 

12. 对于没有构造函数而且全体数据成员均为public的类,可以采用与初始化数组元素相同的方式来初始化其成员。根据数据成员的声明次序来使用初始化式。

 

13. 友元friend机制允许将类的非公有成员的访问权授予指定的函数或者类。友元声明以关键字friend开始,只能出现在类内部。

如果将一个类设为友元,则友元类的所有成员函数都可以访问授予友元关系类的非公有成员。

 

14. 友元函数可以在类的内部定义,该函数的作用域扩展到【包围该类定义的作用域】。

 

15. static数据成员独立于该类的任意对象而存在。static成员函数没有this形参。

当我们在类的外部定义static成员时,无需重复使用static关键字,只需要在类内部声明时使用。

 

16. static成员不是通过类构造函数初始化,而应该在定义时初始化。

如果初始化式是一个【常量表达式】,那么const static数据成员可以在类定义体内部进行初始化。但是即使在类的定义体内部初始化,const static数据成员仍必须在类的定义体之外进行定义。

 

17. static数据成员的类型可以是该成员所属的类类型,与非static成员不同。

转载地址:http://zwbdi.baihongyu.com/

你可能感兴趣的文章
用find命令查找最近修改过的文件
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
Phone双模修改涉及文件列表
查看>>
android UI小知识点
查看>>
Android之TelephonyManager类的方法详解
查看>>
android raw读取超过1M文件的方法
查看>>
ubuntu下SVN服务器安装配置
查看>>
MPMoviePlayerViewController和MPMoviePlayerController的使用
查看>>
CocoaPods实践之制作篇
查看>>
[Mac]Mac 操作系统 常见技巧
查看>>
苹果Swift编程语言入门教程【中文版】
查看>>
捕鱼忍者(ninja fishing)之游戏指南+游戏攻略+游戏体验
查看>>
iphone开发基础之objective-c学习
查看>>
iphone开发之SDK研究(待续)
查看>>
计算机网络复习要点
查看>>
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>