考慮一個類型bar
已用戶定義的轉換運算符至bar
類型的引用:在什麼情況下會調用類型的轉換操作符?
struct bar
{
operator bar &();
operator const bar &() const;
};
當將應用於這些轉換?此外,如果這些運營商是deleted
,這意味着什麼?有沒有任何功能有趣的使用?
下面的程序似乎並不適用任何轉換:
#include <iostream>
struct bar
{
operator bar &()
{
std::cout << "operator bar &()" << std::endl;
return *this;
}
operator const bar &() const
{
std::cout << "operator const bar &() const" << std::endl;
return *this;
}
};
void foo(bar x)
{
}
int main()
{
bar x;
bar y = x; // copy, no conversion
y = x; // assignment, no conversion
foo(x); // copy, no conversion
y = (bar&)x; // no output
y = (const bar&)x; // no output
return 0;
}
那看起來編譯器會在這裏發出一個有用的警告。 –
謝謝。任何想法,爲什麼我被允許定義這樣的功能,如果他們永遠不能使用? –