6
今天我不小心把const
放在我的構造函數的開頭(複製粘貼錯誤)並編譯。我只在Visual Studio 2008中使用過C++ 11。這個語法是否有任何意義?這是微軟在constexpr
的早期嘗試嗎?作爲一個const構造函數是否有這樣的事情?
class foo
{
public:
const foo(int i){}
};
foo f(1);
今天我不小心把const
放在我的構造函數的開頭(複製粘貼錯誤)並編譯。我只在Visual Studio 2008中使用過C++ 11。這個語法是否有任何意義?這是微軟在constexpr
的早期嘗試嗎?作爲一個const構造函數是否有這樣的事情?
class foo
{
public:
const foo(int i){}
};
foo f(1);
您的代碼不符合標準,不存在這種情況。但是,從C++ 11開始,您可以使用constexpr
構造函數,因此您的對象在編譯時構建,並可以在constexpr
表達式中進一步使用。
儘管我沒有使用它,但MSVS在標準遵從方面並不是最好的編譯器,至少這是我從本網站的各種問題中意識到的。
我不知道它在VC++ 08中有什麼影響,如果有的話。它可能會被忽略? – user2864740 2015-04-03 17:08:46
我能夠在構造函數的主體中調用非const函數,所以如果它有效果,它不會限制構造函數中調用的內容。 – cppguy 2015-04-03 17:09:48
@cppguy這並不奇怪,因爲ctor沒有被聲明爲'foo(int i)const'。我不知道後者是否在VS(具有可變成員變量)中工作,雖然ctors不能被cv限定:) – vsoftco 2015-04-03 17:12:20