1 #include <stdio.h> 2 3 struct S 4 { 5 S(double d){ 6 7 } 8 bool operator==(const S &rhs) const{ 9 return true; 10 } 11 }; 12 13 struct K{ 14 K(double d){ 15 16 } 17 }; 18 19 int main() 20 { 21 S s(1.0); 22 if (1.0==s){ 23 printf("ok\n"); 24 } 25 }
第22行,編譯失敗。double能夠隱式轉換爲S,調用第8行的==重載函數。可是C++明確的拒絕了這一條道路。函數