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

函数返回值为一个类解决办法

2012-03-01 
函数返回值为一个类class Sample{int valstd::string namepublic:Sample(int data, std::string str):va

函数返回值为一个类

class Sample
{

int val;

std::string name;

public:

Sample(int data, std::string str):val(data),name(str){}
};

Sample fun()
{
Sample tmp(2,"xxx");
return tmp;

}

int main()
{



fun();

return 0;
}





fun();
00C0174E lea eax,[ebp-0E8h] 
00C01754 push eax  
00C01755 call fun (0C01159h) 
00C0175A add esp,4 
00C0175D lea ecx,[ebp-0E8h] 
00C01763 call Sample::~Sample (0C01154h) 



call fun 这一句前有一个push eax, 一般而言,call前 把一些值压到栈中,是做参数,,,,

fun这个函数是没有参数的啊??

 lea eax,[ebp-0e8h] 这一句, 取某个变量的地址, main 函数中没有变量啊。。。。




[解决办法]
不好意思,没有细看。

只不过对于你的问题不同编译器及编译平台是有不同答案的,完全取决于编译器怎么做。

如果使用汇编语言,有很多种方案。
[解决办法]

探讨非常感谢你的回复, 不过这个帖子其实不是 问;关于编译器有话的问题而是
讨论,为什么会讲一个main中的对象的地址,放到栈中。。。。
引用:
这里有一个返回值优化的问题~~
参考ISO/IEC 14882:2003(E) 12.8 Copying class objects 中的15条款

热点排行