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

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