C++(常函数、常对象)

C++(常函数、常对象),第1张

常函数、常对象

首先明确:

  1. 常函数不能修改成员变量(可以调用,不能修改)
  2. 想要修改成员变量,必须在成员变量前加mutable关键字
  3. 常对象只能调用常函数,但是普通对象既可以调用普通函数也可以调用常函数
class car
{
	public:
		//常函数的const加在大括号之前,本意是在普通函数的this指针前加const,
		//形成const car* const c这样的结构,及不可以更改指针的地址,也不可以改指针指向的值
		car(string name)
		{
			this->name=name;
		}
		void changeName(string name) const
		{
			this->name=name;
		}
		void showName()
		{
			class="superseo">cout<<this->name<<endl;
		}
	private:
		mutable string name;
};

car c("BWM");
c.changeName("wuLin");//正确,普通对象依然可以调用常函数
c.showName();

const car c2("DaBen");
c2.changeName("wuLin");
//c2.showName();常对象不能调用普通函数

常对象的成员变量都不允许修改,但是当普通函数里面有修改普通成员变量的时候,调用的话成员变量属性被修改,这和常对象的定义产生冲突了,所以常对象只能调用常函数

但是,常函数可以调用普通对象吗,还是只能调用常函数呢???

//若成员变量这样定义,Kinds是一个类
mutable Kinds k;
//常函数如下
void change(Kinds &k) const
{
	this->k.name=k.name;
}
需要注意,常函数的本意是让this指针指向的值也不能改变,故随可以调用普通对象,
//但是不能修改this指针指向的本对象的值

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/742829.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存