我知道返回一个临时对象的const引用是可以的!(像这个例子:)
class A {
public:
virtual const A& clone () { return (A()); }
virtual std::string name() const { return ("A"); }
};
Run Code Online (Sandbox Code Playgroud)
如果我想这样做,它仍然是正确的:
class B : public A {
public:
virtual const A& clone () { return (B()); }
virtual std::string name() const { return ("B"); }
};
Run Code Online (Sandbox Code Playgroud)
我认为是的,但在执行时,返回的对象仍被视为A对象(如本例:)
main.cpp中
#include <iostream>
#include <string>
int main() {
B bb;
A* aa = &bb;
std::cout << aa->clone().name() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
产量
valgrind ./a.out
==14106== Use of uninitialised …Run Code Online (Sandbox Code Playgroud)