如果我 NOT 在将基指针发送到另一个类构造函数时使用对指针的引用 - 此类中的和将basepointer绑定到派生对象base - basepointer返回NULL。
简单 - 这是什么原因?
#include <iostream>
using namespace std;
class Base {
public:
virtual void print() = 0;
};
class Sub1 : public Base {
public:
void print() {
cout << "I am allocated!\n";
}
};
class App {
public:
App(Base *b) {
b = new Sub1;
}
};
int main() {
Base *b;
b = NULL;
App app(b);
if (b != NULL)
b->print();
else
cout << "Basepointer is NULL\n";
return 0;
}
这里的关键部分是App-class构造函数的签名
不使用对basepointer的引用,即
App(Base *b)
输出是:
Basepointer is NULL
当使用对基类的引用时,即
App(Base *&b)
输出是:
I am allocated!
答案 0 :(得分:0)
您正在通过值传递指针,这意味着该值已被复制,并且在该函数中您只需修改副本。修改副本当然不会修改原件。