常引用,常对象,常成员函数,常数据成员~

①常引用

形式—— const 类型 &对象名或变量名

②常对象

形式——const 类名 对象名

1.常对象的数据成员不能被修改了,在定义的时候应该对其进行初始化

2.常对象不能够调用普通成员函数——因为普通成员函数可能会修改对象的数据类型,这是不安全的。

3.常对象可以调用静态成员函数,常成员函数,其实也可以调友元函数  (但是这里不对每一个具体展开了,就只是为了更加明白常对象是不能调用普通的成员函数的即可)

③常成员函数

形式——返回值类型 方法名(参数表)

1.常成员函数不能改变对象的值,也不能在函数体里面调非常成员函数。

2.常对象可以调常成员函数和静态成员函数

3.常成员函数实现的时候,函数头是应该和声明的函数头一致的,const也是函数类型的一个组成部分,而对于友元函数和静态成员函数是不用friend和static的

4.非常对象也可以调用常成员函数,但是当常成员函数与非常成员函数同名的时候(可以视为函数重载),对于非常对象是会优先调用非常成员函数的。

④常数据成员

形式——const 数据类型 变量名;

        (当同时还是静态数据成员的时候)static const 数据类型 变量名;

1.常数据成员的初始化只能通过构造函数的列表来完成


class CPoint
{
public:
	CPoint(int xx, int yy,int zz);
private:
	int x,y;
	const int z;
};
CPoint::CPoint(int xx, int yy, int zz) :z(zz)
{
	x = xx;
	y = yy;
	//z = zz;     这个是不被允许的,因为会报赋值号左侧必须是可修改的左值(可修改,有数据存储空间)
}

2.但是静态的常数据成员必须在类外进行初始化,不能在构造函数中进行,并且const不能省

class CPoint
{
public:
	CPoint(int xx, int yy,int zz);
private:
	int x,y;
	static const int z;
};
const int z = 10;  //const不能省,也是类型的一部分
3.如果类有多个重载构造函数,就应该在每一个重载构造函数的初始化列表中去初始化常数据成员,当然刚才说的2.除外。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值