求教下面程序的输出结果是多少?

李先森- 2013-09-15 08:53:08
class A
{
public:
A() { cout<<"A"<<endl; }
~A() { cout<<"~A"<<endl; }
};

class B:public A
{
public:
B(A &a):_a(a)
{
cout<<"B"<<endl;
}
~B()
{
cout<<"~B"<<endl;
}
private:
A _a;
};

int main(void)
{
A a;
B b(a);
return 0;
}
...全文
168 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
李先森- 2013-09-26
  • 打赏
  • 举报
回复
十分谢谢,已经明白。
turing-complete 2013-09-26
  • 打赏
  • 举报
回复
引用 10 楼 lee_123456_lee 的回复:
能详细讲一下吗(怎么构造了三次)?谢谢。
你把下面的代码运行一下就明白了。
class A 
{ 
public: 
    A()  {    cout<<"A"<<endl;    } 
    A(const A&)  {    cout<<"A"<<endl;    } 
    ~A() {    cout<<"~A"<<endl;   } 
}; 
 
class B:public A 
{ 
public: 
    B(A &a):_a(a) 
    { 
        cout<<"B"<<endl; 
    } 
    ~B() 
    { 
        cout<<"~B"<<endl; 
    } 
private: 
    A _a; 
}; 
 
int main(void) 
{ 
    A a;
    B b(a);
    return 0;
}
李先森- 2013-09-26
  • 打赏
  • 举报
回复
能详细讲一下吗(怎么构造了三次)?谢谢。
turing-complete 2013-09-26
  • 打赏
  • 举报
回复
引用 8 楼 lee_123456_lee 的回复:
我只能看出A构造了三次,希望能给点提示,谢谢!
对,就是三次,所以析构三次。
李先森- 2013-09-26
  • 打赏
  • 举报
回复
我只能看出A构造了三次,希望能给点提示,谢谢!
turing-complete 2013-09-26
  • 打赏
  • 举报
回复
引用 6 楼 lee_123456_lee 的回复:
为什么A会析构三次?
以为构造了三次。
李先森- 2013-09-26
  • 打赏
  • 举报
回复
为什么A会析构三次?
max_min_ 2013-09-15
  • 打赏
  • 举报
回复
构造:先父类再子类 析构:先子类再父类
turing-complete 2013-09-15
  • 打赏
  • 举报
回复
引用 2 楼 lee_123456_lee 的回复:
引用 1 楼 mougaidong 的回复:
您是来出考题的?
不是,这个问题不会,所以请教(希望能给出详细解释)!
A A B ~B ~A ~A ~A ps. 哪里不会点哪里
lm_whales 2013-09-15
  • 打赏
  • 举报
回复
编译一下,运行一下,就得到结果了. 看到结果,就会解释; 不会,就看看构造函数,和析构函数的作用.
李先森- 2013-09-15
  • 打赏
  • 举报
回复
引用 1 楼 mougaidong 的回复:
您是来出考题的?
不是,这个问题不会,所以请教(希望能给出详细解释)!
turing-complete 2013-09-15
  • 打赏
  • 举报
回复
您是来出考题的?

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧