penetration 发表于 2014-12-1 00:28

【新人】解决继承时构造和析构函数的顺序


#include <iostream>
class a
{
public:
        a()
        {
                std::cout << "into A construct function !" << std::endl;
        }
        ~a()
        {
                std::cout << "into A destruct function !" << std::endl;
        }
};
class b :public a
{
public:
        b()
        {
                std::cout << "into B construct function !" << std::endl;
        }
        ~b()
        {
                std::cout << "into B destruct function !" << std::endl;
        }
};

class c :public b
{
public:
        c()
        {
                std::cout << "into C construct function !" << std::endl;
        }
        ~c()
        {
                std::cout << "into C destruct function !" << std::endl;
        }
};

int main()
{
        c *z = new c;
        delete z;
        return 0;
}


纯C++的语法,本人小白,因为有个群里有人问这个问题,就敲了下,也就顺便放到坛子里给需要的人了,这样就很清楚的能理解继承时调用的先后顺序了。

penetration 发表于 2014-12-1 00:30

希望大神们不要吐槽,代码风格还有待加强,希望大家能多提意见

Scar-疤痕 发表于 2014-12-1 08:35

学习了,谢谢楼主!

lubinxpp 发表于 2014-12-1 09:48

学JAVA的路过~~!

penetration 发表于 2014-12-1 11:49

Scar-疤痕 发表于 2014-12-1 08:35
学习了,谢谢楼主!

不客气,共同学习罢了

penetration 发表于 2014-12-1 11:50

lubinxpp 发表于 2014-12-1 09:48
学JAVA的路过~~!

JAVA也是一样的

RblBeAnS 发表于 2014-12-8 20:23

using namespace std;没加。
其实就是栈的原理,先进后出。
LZ辛苦

dyt398 发表于 2014-12-8 21:53

学习了 虽然我是学java的

penetration 发表于 2014-12-10 00:59

dyt398 发表于 2014-12-8 21:53
学习了 虽然我是学java的

语言有很大的相通性,不一样的时候不要混淆就好。一样的便可以借鉴
页: [1]
查看完整版本: 【新人】解决继承时构造和析构函数的顺序