Chinaunix首页 | 论坛 | 博客
  • 博客访问: 504584
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-21 13:40
个人简介

技术改变命运

文章分类

全部博文(184)

文章存档

2020年(16)

2017年(12)

2016年(156)

我的朋友

分类: C/C++

2016-09-04 13:32:36

点击(此处)折叠或打开

  1. #include<iostream>
  2. using namespace std;
  3. class A
  4. {
  5. public:
  6.         A(){cout << "Hello world\n";}

  7. };
  8. class B:public A
  9. {

  10. };
  11. int main()
  12. {
  13.         A *c = new B;//这里不能写成B *c = new A;
  14.         return 0;
  15. }
  16. 运行结果:
  17. [root@bogon c++]# ./a.out
    Hello world
  18. 运行结果表明执行了A的构造函数
  19. new B的执行过程:首先调用operator new 分配足够的空间,然后执行A的构造函数,B的构造函数。


  20. #include
    using namespace std;
    class A
    {
    public:
            A(){cout << "Hello world\n";}
            ~A() {cout << "fare\n"; }
    };
    class B:public A
    {
    public:
            B() {cout << "hi\n";}
            ~B() {cout << "Bye\n";}
    };
    int main()
    {
            A *c = new B;
            delete c;
            return 0;
                           
    }
  21. 运行结果;
  22. [root@bogon c++]# ./a.out
    Hello world
    hi
    fare
  23. #include
    using namespace std;
    class A
    {
    public:
            A(){cout << "Hello world\n";}
             virtual ~A() {cout << "fare\n"; }
    };
    class B:public A
    {
    public:
            B() {cout << "hi\n";}
            ~B() {cout << "Bye\n";}
    };
    int main()
    {
            A *c = new B;
            delete c;
            return 0;
    }
  24. 运行结果:
  25. [root@bogon c++]# ./a.out
    Hello world
    hi
    Bye
    fare
  26. 由此可见析构函数应尽量声明为虚函数!构造函数不能为虚函数。无论构造函数还是析构函数尽量不要调用虚函数!

    2016.9.11

    点击(此处)折叠或打开

    1. #include<iostream>
    2. using namespace std;
    3. class S
    4. {
    5. public:
    6.     S(){cout << "Hello world";fun();}
    7.     virtual void fun(){cout << "funS";}
    8.     ~S(){cout << "Bye";}
    9. };
    10. class Derived :public S
    11. {
    12. public:
    13.     Derived(){cout << "hi";}
    14.     virtual void fun(){cout << "funDe";}
    15.     virtual ~Derived(){cout << "farewell";}
    16. };
    17. int main()
    18. {
    19.     Derived *de = new Derived();
    20.     delete de;
    21.     return 0;
    22. }
    运行结果:
  27. [root@bogon ~]# ./a.out
    Hello worldfunShifarewellBye[root@bogon ~]#
                                                    



阅读(845) | 评论(0) | 转发(0) |
1

上一篇: 排序算法稳定性

下一篇:xdm配置

给主人留下些什么吧!~~