程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中修改const成員變量

C++中修改const成員變量

編輯:C++入門知識

在C++中,被const修飾的變量,表示其不可變。當然C++提供了類型轉換操作符const_cast,用來將變量的const屬性臨時性地去掉。

如果在一個類裡面有一個const成員變量,我們如何在成員函數中修改它呢?

class Test
{
public:
	const int a;
public:
	Test():a(0){}
};

那麼我們可以寫這麼一個函數
void Test::SetA(int _a)
{
	const_cast(a) = _a;
}

現在如果SetA是Test的const成員函數,那麼上述編譯會通過嗎?答案是可以的,因為const_cast將a的const屬性去掉了。
void Test::SetA(int _a) const
{
	const_cast(a) = _a;
}

當然,我們也可以通過在Test中增加一個指針或引用,然後隨時通過這個指針或引用來改變a的值。
class Test
{
public:
	const int a;
	int *ptr;
	int &ref;
public:
	Test():a(0), ptr(const_cast(&a)), ref(const_cast(a)){}

	void SetA(int _a)
	{
		const_cast(a) = _a;
	}
};

int main()
{
	Test t;
	cout << t.a << endl;
	//0

	*t.ptr = 1;
	cout << t.a << endl;
	//1

	t.ref = 2;
	cout << t.a << endl;

	t.SetA(3);
	cout << t.a << endl;
	//3

	system("pause");
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved