有人可以解释这个C ++输出

时间:2014-01-08 06:55:02

标签: c++

我有这个c ++代码和代码的输出。有人可以告诉我这个代码是如何迭代的。我试图干流但不能弄明白。

#include <iostream>

using namespace std;

class Something
{
public:
    Something(){cout<<"A\n";}
    virtual ~Something(){cout<<"B\n";}
};
class Parent
{
public:
    Parent(){cout<<"C\n";}
    virtual ~Parent(){cout<<"D\n";}
};
class Child : public Parent
{
public:
    Child(){cout<<"E\n";}
    Child(const Child& P){cout<<"F\n";}
    Child& operator=(const Child& rhs){cout<<"G\n";}
    virtual ~Child(){cout<<"H\n";}
protected:
    Something S_;
};
int main()
{
   Child ChildA;
   Child ChildB=ChildA;
   ChildA=ChildB;

   return 0;
}

输出: C 一个 Ë C 一个 F G H 乙 d H 乙 d

1 个答案:

答案 0 :(得分:2)

所以你有一个继承和组成:孩子是父母,有一些东西 无论如何,这是用例:

Child ChildA;

要成为一个孩子,你必须做一个父母和一个东西。你得到:

  

C A E

要制作第二个项目,你将从ChildA复制,但你从同样开始:做一个父母,做一些事情,然后复制一个孩子:

  

C A F

复制一个值:

  

然后从上到下摧毁每个人:

  

H B D H B D