第7章 类
来源:互联网 发布:android 6.0源码编译 编辑:程序博客网 时间:2024/05/28 17:07
1.拷贝构造函数的参数是确定的,不能重载
2.类的基本思想是数据抽象和封装。
数据抽象是一种依赖于接口和实现分离的编程以及设计技术。类的接口包括用户所能执行的操作;类的实现则包括类的数据成员,负责接口实现的函数体以及定义类所需的各种私有函数。
封装实现了类的接口和实现的分离。封装后的类隐藏了它的是实现细节,也就是说,类的用户只能使用接口而无法访问实现部分。
3.定义在类内部的函数是隐式的inline函数。
4.定义成员函数
尽快所有成员都必须在类的内部声明,但是成员函数体可以定义在类内也可以定义在类外。
5.一般来说,如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内。
6.构造函数
每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化进程,这些函数叫做构造函数。
构造函数的任务是初始化对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。
构造函数的名字和类名相同。与其他函数不一样的是,构造函数没有返回类型;除此之外类似于其他的函数,构造函数也有一个(可能为空的)参数列表和一个(可能为空的)函数体。类可以包含多个构造函数,和其他重载函数差不多,不同的构造函数必须在参数数量或参数类型上有所区别。
不同于其他成员函数,构造函数不能被声明称const的。当我们创建类的一个const对象时,直到构造函数完成初始化过程,对象才真正取得其常量属性。因此,构造函数在const对象的构造过程中可以向其写值。
如果我们的类没有显式地定义构造函数,那么编译器就会为我们隐式地定义一个默认构造函数。
编译器创建的构造函数又被称为合成的默认构造函数,按照如下规则来初始化类的数据成员:
1.如果存在类内的初始值,用它来初始化成员。
2.否则,默认初始化。
只有在类没有声明任何构造函数时,编译器才会自动地生成默认构造函数。
如果定义在块中的内置类型或复合类型(比如数组和指针)的对象被默认初始化,则它们的值是未定义的。该准则同样适用于默认初始化的内置类型成员。因此,含有内置类型或复合类型的类应该在类的内部初始化这些成员,或者定义一个自己的默认构造函数。否则,用户在创建类的对象时就可能得到未定义的值。
(如果类包含有内置类型或者复合类型的成员,则只有当这些成员全部被赋予了类内的初始值时,这个类才适合于使用合成的默认构造函数)
- 第7章 类
- 第 7 章 类
- 第7章 常用类
- 【C++ Primer 第5版 笔记】第7章 类
- 第1章 第7题
- 第3章 第7题
- 第4章 第7题
- 第7章 第1题
- 第7章第1题
- 第7章第2题
- 第7章第3题
- 第7章第4题
- 第7章 第2题
- 第7章 第3题
- 第7章 第4题
- 第7章 第5题
- 第7章 第6题
- 第7章第5题
- “unexpected nil window in _UIApplicationHandleEventFromQueueEvent”解决
- C Peimer 第16章编程习题
- Bundler,PMVS,CMVS的编译与使用
- 数据结构:循环队列(C语言实现)
- guard
- 第7章 类
- asd
- C++:运算符重载
- FLAG_ACTIVITY_CLEAR_TOP:
- linux查看系统版本
- 广义表
- spark-sql
- 【读书分享】精益企业——高效能组织如何规模化创新?
- TextView 要求显示指定的字符,其余的以省略号代替