《C++primer(第五版)》学习之路-第七章:类

 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:[email protected]

 

7.1 定义抽象数据类型

 

1.类的基本思想是数据抽象和封装,数据抽象是一种依赖于接口和实现分离的编程(以及设计)技术。类的接口包括用户所能执行的操作:类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。

 

2.成员函数通过一个名为this的额外隐式参数来访问调用它的那个对象。当我们调用一个成员函数时,用请求该函数的对象地址初始化this

 

3.C++允许把const关键字放在成员函数的参数列表之后,此时,紧跟在参数列表后面的const表示this是一个指向常量的指针。像这样使用const的成员函数被称作常量成员函数。

 

4.每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。

 

5.如果我们的类没有显式的定义构造函数,那么编译器回味我们隐式的定义一个默认构造函数。编译器创建的构造函数又被称为合成的默认构造函数。对于大多数类来说,这个合成的默认构造函数将按照如下规则初始化类的数据成员:

如果存在类的初始值,用它来初始化成员

否则,默认初始化该成员

 

6.C++11新标准中,如果我们需要默认的行为,那么可以通过在参数列表后面写上=default来要求编译器生成构造函数。其中=default 既可以和声明一起出现在类的内部,也可以作为定义出现在类的外部。和其他函数一样,如果=default在类的内部,则默认构造函数是内联的;如果它在类的外部,则该成员默认情况下不是内联的。

 

7.2 访问控制与封装

 

1.C++语言中,我们使用访问说明符加强类的封装性:

定义在public说明符之后的成员在整个程序内可悲访问,public成员定义类的接口

定义在private说明符之后的成员可以被类的成员函数访问,但是不能被使用该类的代码访问,private部分封装了类的实现细节。

 

2.类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元。如果类想把一个函数作为它的友元,只需要增加一条以friend关键字开始的函数声明语句即可。

 

7.3 类的其他特性

 

1.mutable修饰一个可变数据成员,永远不会是const,即使它是const对象的成员。因此,一个const成员函数可以改变一个可变成员的值。

 

2.一个const成员函数如果以引用的形式返回*this,那么它的返回类型将是常量引用。

 

7.4 类的作用域

 

1.名字查找的过程:

首先,在名字所在的块中寻找其声明语句,只考虑在名字的使用之前出现的声明

如果没有找到,继续查找外层作用域

如果最终没有找到匹配的声明,则程序报错

 

2.类的定义分两步处理

首先,编译成员的声明

直到类全部可见后才编译函数体

 

3.成员函数中使用的名字按照如下方式解析

首先,在成员函数内查找该名字的声明。和前面一样,只有在函数使用之前出现的声明才被考虑。

如果在成员函数内没有找到,则在类内继续查找,这时类的所有成员都可以被考虑。

如果内类也没有找到该名字的声明,在成员函数定义之前的作用域内继续查找。

 

7.5 构造函数再探

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值