如果說使用了強制轉換,結果對象是一個 const對象,這樣說是否正確?在C++中強制生成const對象
...因此只能作爲函數的參數使用,如果 函數接受它作爲const對象?
例如
class C1 {
public: C1(int i=7, double d = 2.5){};
};
void f(C1& c) {};
int main(){
f(8);
return 1;
}
//won't compile
(當然如果f(....)由值接收參數,則它得到 非const版本它可與工作)
+1:我喜歡這個答案。這可能會有助於給出每次轉換的等級和種類(以顯示爲什麼選擇某個特定版本)。請檢查我是否正確。我列舉了A,B,C,...... - 第一次通話(A):完全匹配到2,轉換爲1.(B)升級到1,轉換爲2.(C)精確匹配到2,轉換爲1.(D)精確匹配到4.(E)精確匹配到6.(F)轉換(派生 - >基礎)到4. - 在所有`const T&`到rvalue`T`的參考綁定中, `const T`被認爲是頂級const,並且不影響rank(`void f(T); void f(const T&); f(T());`ambiguous) – 2009-07-07 17:53:46