构造函数
下面是不同的构造函数形式
友元
类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元。如果类想把一个函数作为它的友元,只需要增加一条以friend
关键字开始的函数声明语句即可:
上面的add函数作为Sales_data类的友元函数,可以访问该类的private
和protected
类型的成员,友元声明只能出现在类定义的内部,但在类内出现的具体位置不限。
类还可以把其它类定义成友元,也可以把其它类的成员函数定义成友元。比如Window_mgr
类负责将Screen
的内容设为空白,为了完成这个任务,需要访问Screen
的私有成员,要想令这种访问合理,Screen
需要把Window_mgr
指定成它的友元:
类的其他特性
关于在函数后面添加const的作用:
- 表示该函数可以被常量对象调用,常量对象只能调用使用const函数
- 表示该函数可以操作成员,但是不可以修改数据成员的内容
有时候我们希望能够修改类的某个数据成员,即使是在一个const
成员函数内,可以通过在变量的声明中加入mutable
关键字做到这一点。一个可变数据成员永远不会是const
,即使它是const对象的成员:
返回*this的成员函数
比如下面的代码:
set成员返回值是条用set的对象的引用,返回引用的函数是左值,意味着这些函数返回的是对象本身而非对象的副本。【这里我对左值的理解变为可以放在等式的左边。。。】
有了上面的函数,我们可以把这样一系列的操作连接在一条表达式中:
如果set函数返回Screen而非Screen&,则调用set函数只能改变临时副本。
一个const成员函数如果以引用的形式返回*this
,那么它的返回类型将是常量引用。