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

求解释 构造函数解决方案

2012-03-24 
求解释 构造函数C/C++ code#include iostream.hclass B{private:intm_nDatapublic:B( int nData 0){m

求解释 构造函数

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( 局部对象,也就是形参)



探讨

那个&amp;(theB.SetObj(theB))乃最后返回的地址
中间创建了 两个
你说的那个无名对象是第几次创建的

第一次乃传参调用了构造拷贝 第二次返回时又调用了次构造拷贝

热点排行