求解释 构造函数
- C/C++ code
#include <iostream.h>class B{ private: int m_nData; public: B( int nData = 0) { m_nData = nData; cout << "B()" << endl; } //如果自定义的拷贝构造函数 那么系统不提供默认的拷贝构造函数(做了逐域赋值) //适用情况 有指针且 指向分配的内存 B( const B& obj ) { *this = obj; cout << "B copy constructor ()" << endl; } B SetObj( B obj) { return obj; }};int main(int argc, char* argv[]){ B theB(10); cout << hex << &(theB.SetObj(theB)) << endl; return 0;}我想问下theB的地址和输出的地址 中间那4字节被什么吃了 我跟了一圈没发现用到过中间那个地址
我系统中 中间那地址是0012ff78
也就是
&theB = 12ff7c
&(theB.SetObj(theB)) = 12ff74
中间地址78全C 也不像是因为拷贝构造了0ah
蛋疼啊 附图最好 谢谢了
[解决办法]
第一次可以叫局部对象,这个名字叫obj
第二次叫无名对象,它在main函数帧中。
在进入你的成员函数之前,main中的局部对象通过拷贝构造函数,构造你了的obj,
SetObj( 局部对象,也就是形参)