在上述小测试中,为什么one.print() 输出结果为2 而不是 1 呢??帮忙解释一下,谢谢。
明白了,当类包含引用成员时,调用构造函数的参数不能用值传方式,只能用引用传递方式。谢谢了。 |
还需要考虑被引用对象的声明期管理。
比如还是刚才那个例子, test不变 :
int main() {
test* pone = 0;
{
int i1 = 1;
pone = new test(i1);
pone->print(); // 输出1
}
// 到这里, i1 销毁, pone 引用的是一个无效的对象
// pone->print(); // 无定义行为
}
直接使用引用做成员的情况不多。
比较多的是使用指针或者const引用作成员。