2012-03-09 29 views
1

下面的類似乎compile,但轉換運營商從來不被稱爲:超載引用轉換

class A 
{ 
public: 
    operator A() const { std::cout << "A() called" << std::endl; return *this; } 
    operator A&() { std::cout << "A&() called" << std::endl; return *this; } 
    operator const A&() const { std::cout << "const A&() called" << std::endl; return *this; } 
}; 

是指定轉化爲對自身的引用的函數根本不理?

+2

我確定有人會引用這個標準,但同時我會說明一點:這根本沒有任何意義。 – David 2012-03-09 04:41:47

回答

1

這裏有一個從12.3.2

A conversion function is never used to convert a (possibly cv-qualified) object to the (possibly cv-qualified) same object type (or a reference to it)

而且報價,海合會使用-Wall -Wextra -pedantic -ansi遞給我:warning: this statement has no effect的靜態鑄造。 (另外,嘗試clang online它會給你一些不錯的編譯器錯誤信息)。