最简单的例子:
struct A {};
struct B : public A {};
void Call(A&) {}
int main() { Call(B()); return 0; }
这在MSVC中进行。 c 7.0.0-3无法解决此问题:
test.cpp:4:14: error: no matching function for call to 'Call'
int main() { Call(B()); return 0; }
^~~~
test.cpp:3:6: note: candidate function not viable: no known conversion from 'B' to 'A &' for 1st argument
void Call(A&) {}
^
为什么?
我希望构造函数被调用,该对象由main()保留在内存中,引用将被函数调用接受,然后一旦执行Call()函数,该对象将被销毁。相反,它根本无法编译。