C++语言求解惑
当时const Re* pU = &(bound(*PGO));的时候,结果如图

是指针的情况下,Re对象为啥会被提前释放
[解决办法]
你在Re里面重载一下面向地址的赋值运算符看看
[解决办法]
$ g++ a.cpp
a.cpp: 在函数‘int main()’中:
a.cpp:30:34: 错误:取临时变量的地址 [-fpermissive]
你这个g++里编译都通不过,然后
const Re bound(const UI& obj)你这个函数返回的是一个临时对象,返回的不是引用。
按你意思我觉得const Re& bound(const UI& obj)这个才是你本意吧?
[解决办法]
我的楼层给你的就是答案啊
const Re bound(const UI& obj)你这个函数返回的是一个临时对象,返回的不是引用。
返回完跑出作用域临时对象就释放了啊。
[解决办法]
const Re pU = bound(*PGO);其实是两次拷贝构造,只是编译器优化,所以只有一次
1.return=bound(*PGO),return是临时变量,会在该语句执行完成后释放(编译器应该是把这次优化了)
2.const Re pU=return,pU是函数局部变量,会在函数块执行完成后释放
const Re* pU = &(bound(*PGO));只有一次拷贝
1.return=bound(*PGO),return是临时变量,会在该语句执行完成后释放
2.const Re* pU = &return,只是获取变量的地址,不拷贝,但是这里的指针所指的是临时变量,所以是不能使用的
[解决办法]
临时变量,不使用时,编译器可以立即释放。
指针,引用,引用临时变量,不算使用。函数调用,表达式才算使用。