欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

const - 常见错误

程序员文章站 2024-03-22 13:56:34
...

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 变量进行引用

解决方案:
修改引用变量, 或者被引用的变量
const - 常见错误
以上画图理解

结语:

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

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

相关标签: Bug c++