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

一个关于C++构造与析构函数的有关问题。感激

2012-05-28 
一个关于C++构造与析构函数的问题。感激!C/C++ code#include iostreamusing namespace stdclass A{publi

一个关于C++构造与析构函数的问题。感激!

C/C++ code
#include <iostream>using namespace std;class A{public:    int data;    A():data(0){}    ~A(){}};class B{private:    A * ptr;public:    B():ptr(0)    {        cout<<"B construct1"<<endl;    }    B(A * a):ptr(a)    {        cout<<"B constructor2"<<endl;    }    ~B()    {        cout<<"B deconstructor"<<endl;    }};int main(){    A a;    B b1;//B construct1    b1 = &a;    cout<<"end"<<endl;    return 0;};

输出:
B construct1
B constructor2
B deconstructor
end
B deconstructor

问题是这样的:
b1 = &a;为什么会引起B constructor2
B deconstructor两句输出呢?
而且是构造在前,析构在后?
它的过程是怎样的啊??
各位大侠有谁可以给我解答么?感激不尽~


[解决办法]
b1 = &a;
等价于
B tmp(&a);
b1=tmp;
[解决办法]
b1 = &a;
其实需要调用赋值函数,但没有,就先构造一个临时对象,再调用默认的赋值函数
[解决办法]
不对,可能调用了类似这个函数
C/C++ code
b1.operator = (&a) 

热点排行