const - 常见错误

const - 常见错误(一)

报错:
error C2662: “Man::play”: 不能将“this”指针从“const Man”转换为“Man &”

#include <iostream>

using namespace std;

class Man
{
public:
	Man()
	{

	}

	void play()
	{
		cout<<"I am playing ..."<<endl;
	}
};

int main(void)
{
	const Man man;
	man.play(); /* 这里会报错 */

	system("pause");
	return 0;
}

原因:
man 是 const 对象, 但是却调用了非 const 方法.
类比: 专一男, 不能去夜店玩耍[因为这样很危险, 可能导致专一男变心]

解决方案:
方案一:
把 const Man man; 修改为: Man man;

方案二:
把 play 方法, 修改为 const 方法

const - 常见错误(二)

正确的代码demo1

#include <iostream>

using namespace std;

class Man
{
public:
	Man()
	{

	}

	void play()
	{
		cout<<"I am playing ..."<<endl;
	}
};

void test(Man &man)
{
	man.play();
}

int main(void)
{
	Man man1;
	test(man1);

	system("pause");
	return 0;
}

正确的代码demo2

#include <iostream>

using namespace std;

class Man
{
public:
	Man()
	{

	}

	void play() const
	{
		cout<<"I am playing ..."<<endl;
	}
};

void test(const Man &man)
{
	man.play();
}

int main(void)
{
	const Man man1;
	test(man1);

	Man man2;
	test(man2);

	system("pause");
	return 0;
}

总结:

原因: 非 const 引用, 不能对 const 变量进行引用
注意: const 引用, 可以对非 const 变量进行引用

解决方案:
修改引用变量, 或者被引用的变量
在这里插入图片描述
以上画图理解

结语:

加油, 继续努力!!! 量变引起质变

时间: 2020-06-21-11-41

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章