zoukankan      html  css  js  c++  java
  • 学习子类的构造和析构顺序

    1 构造函数不能是虚函数

    2 当析构函数不是虚函数时:父指针子对象时:构造是父—>子,析构是父;

    3 当析构函数不是虚函数时:子指针子对象时:构造是父—>子,析构是子—>父;

    4 当析构函数是虚函数时:父指针子对象时:构造是父—>子,析构是子—>父;

    5 构造和析构函数中的虚函数都不能触发多态行为。

    代码:

     1 #include <stdlib.h>
     2 
     3 /**
     4 * @author:zanzan101
     5 */
     6 class A
     7 {
     8 public:
     9     A(){
    10         printf("Ac
    ");
    11         todo();
    12     }
    13     virtual ~A(){
    14         printf("Ad
    ");
    15         todo();
    16     }
    17     virtual void todo()
    18     {
    19         printf("A: todo
    ");
    20     }
    21 };
    22 class B: public A
    23 {
    24 public:
    25     B(){
    26         printf("Bc
    ");
    27         todo();
    28     }
    29     virtual ~B(){
    30         printf("Bd
    ");
    31         todo();
    32     }
    33     void todo()
    34     {
    35         printf("B: todo
    ");
    36     }
    37 };
    38 
    39 int main()
    40 {
    41     printf(">> 父指针子对象
    ");
    42     A* p = new B();
    43 
    44     printf("----------
    ");
    45     p->todo();
    46     printf("----------
    ");
    47     delete p;
    48 
    49 
    50     printf(">> 子指针子对象
    ");
    51     B* q = new B();
    52     printf("----------
    ");
    53     q->todo();
    54     printf("----------
    ");
    55     delete q;
    56 
    57 
    58     system("pause");
    59 
    60     return 0;
    61 }

    输出:

    >> 父指针子对象
    Ac
    A: todo
    Bc
    B: todo
    ----------
    B: todo
    ----------
    Bd
    B: todo
    Ad
    A: todo
    >> 子指针子对象
    Ac
    A: todo
    Bc
    B: todo
    ----------
    B: todo
    ----------
    Bd
    B: todo
    Ad
    A: todo
    请按任意键继续. . .
  • 相关阅读:
    必须转载 PHP & memcached 太精彩了,看一遍就能入门
    SYSID 来指定当前system
    How to increase the JES2 spool size
    JOBPARM SYSAFF的用处
    使用多Volume来创建一个dataset
    如何解决db2nodes.cfg line number “1”, Reason code “10”
    epdf macro to remove comments
    如何停止重复的job
    mysql数值类型
    (九)solr实现autocomplete功能
  • 原文地址:https://www.cnblogs.com/zanzan101/p/3373392.html
Copyright © 2011-2022 走看看