首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++语言求解惑解决方法

2013-10-21 
C++语言求解惑当时const Re* pU &(bound(*PGO))的时候,结果如图是指针的情况下,Re对象为啥会被提前释放

C++语言求解惑


当时const Re* pU = &(bound(*PGO));的时候,结果如图C++语言求解惑解决方法
是指针的情况下,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)这个才是你本意吧?
[解决办法]
引用:
Quote: 引用:

$ 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,只是获取变量的地址,不拷贝,但是这里的指针所指的是临时变量,所以是不能使用的
[解决办法]
临时变量,不使用时,编译器可以立即释放。
指针,引用,引用临时变量,不算使用。函数调用,表达式才算使用。

热点排行
Bad Request.