-6
class a {
a(int b);
}
main(){
int b=5;
a tempa=b;
}
這是如何工作的?爲什麼參數可以通過賦值運算符在對象初始化時傳遞給構造函數?
我在HW中遇到過這個問題?
有人可以幫忙嗎?謝謝。
class a {
a(int b);
}
main(){
int b=5;
a tempa=b;
}
這是如何工作的?爲什麼參數可以通過賦值運算符在對象初始化時傳遞給構造函數?
我在HW中遇到過這個問題?
有人可以幫忙嗎?謝謝。
構造函數與您的問題中顯示的構造函數一樣可以稱爲轉換構造函數。
它允許編譯器獲取參數類型的值並將其轉換爲類的實例。
在你的榜樣,行
a = b;
等於
a = a(5);
(那麼,與既有的一類,並命名爲a
變量的衝突除外)
如果你想禁止它,你必須使構造函數顯式
class A
{
public:
explicit A(int);
};
然後編譯器不能像上面描述的那樣使用轉換的構造函數。你必須明確使用構造函數。
非常感謝,一些程序員老兄。 – ricecakebear
請發佈一些你編譯和運行的實際代碼。 – molbdnilo
Woah ...(){}的字體; ?'與代碼的其餘部分不匹配。你怎麼把它拉開? (不是你應該,它看起來很奇怪) – Borgleader
@Borgleader這些是全角字符。無論如何,對於等寬字體不太有用:) – Quentin