当const进入类和对象家里

当const与类和对象对眼时,会产生三种情况:

1、const修饰类的成员变量:

class A
{
public:
	A(int b):ma(b){}
private:
	const int ma ;
};

 

      首先,const修饰类的成员变量是带常性的,所以它必须在定义时初始化。而类只有在实例化对象时才会对成员变量进行初始化。所以const修饰类的成员变量时,必须依靠构造函数的初始化列表来对它进行初始化。

2、const修饰对象:

  定义常对象的一般形式为

  类名    const    对象名(实参列表);

  const    类名    对象名(实参列表);

      const修饰的对象是常对象,其内容不可变。而且常对象只能调用常方法(这样做的原因是担心非常方法可能会修改常对象数据)。有时候有需求修改常对象里的chen成员变量,可以在该成员变量定义时加上mutable关键字,声明它是可修改的。

3、const修饰类的成员方法

      const修饰类的成员方法又叫常方法,个人认为它就是为了访问常对象里的数据而生成的。它只能访问常对象的成员变量,而不能做修改(mutable关键字修饰的例外)。

class A
{
public:
	A(int b):ma(b){}
	void Print() //const
	{
		cout<<ma<<endl;
	}
private:
	int ma ;
};

int main()
{
	const A b(1);
	b.Print();
}

这里屏蔽掉成员方法后的const则会出现“A::Print”: 不能将“this”指针从“const A”转换为“A &”的错误。如果此时的Print函数去试图修改成员变量的值,也不会被允许。值得提醒的是:普通对象可以调用常方法。

总结:1、const修饰一个变量时,它会给该变量加上常性,不能被修改。

           2、访问和修改的关系图。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值