我發現VS2005 C++編譯器這個奇怪的行爲。這裏是的情況:在構造函數的const參數導致stackoverflow
我不能發佈代碼,但情況很簡單。
這裏是最初的代碼:它的工作完美
class Foo {
public:
Foo(Bar &bar) { ... }
}
的構造函數實現存儲參考,設置一些成員的確...沒有什麼特別的。
如果我更改以下列方式代碼:
class Foo {
public:
Foo(const Bar &bar) { ... }
}
我添加了一個const限定的唯一構造常規參數。
它編譯正確,但編譯器輸出一個警告,說例程Foo :: Foo將導致一個stackoverflow(即使執行路徑不構造任何對象Foo);有效地發生。
那麼,爲什麼不常量參數代碼工作完美,而一個與常量限定詞使一個計算器?什麼會導致這種奇怪的行爲?
您需要發佈兩個代碼和編譯器警告你得到。 – 2010-05-29 08:53:14
無法告知這些信息。我們需要更多的信息或可以複製警告的最小代碼 – Naveen 2010-05-29 08:54:17
真的嗎?我使用C++編譯器版本爲15.00.30729.01的VS2005,並且這兩個代碼片段(使用'class Bar {};')都不會給我任何堆棧溢出警告,即使在最高警告級別。我錯過了什麼嗎? – 2010-05-29 08:56:57