首页 > 编程语言 > 详细

C++构造函数执行顺序

时间:2015-03-22 18:13:10      阅读:188      评论:0      收藏:0      [点我收藏+]

实践是检验真知的唯一标准啊

#include <iostream>
#include <stdio.h>
using namespace std;

class V {
public:
  V(){
    printf("V constructor.....\n");
  }
  V(int k)  {
    printf("V %d constructor.....\n", k);
  }
  ~V()  {
    printf("V destructor......\n"); 
  }
};

class S {
public:
  S(){
    printf("S constructor.....\n");
  }
  S(int k)  {
    printf("S %d constructor.....\n", k);
  }
  ~S()  {
    printf("S destructor......\n"); 
  }
};
class A {
public:
  A(){
    printf("A constructor.....\n");
  }
  A(int k)  {
    printf("A %d constructor.....\n", k);
  }
  ~A()  {
    printf("A destructor......\n"); 
  }
};

class B : public A,  public S, virtual public V{
public:
  B(int x, int y, int z):test1(x), test3(z), test2(y)  {
    printf("B %d %d %d constructor.....\n", x,y,z);
  }
  ~B() {
    printf("B destructor......\n");
  }
private:
  S test1;
  A test2;
  V test3;
};
int main()
{
  B b(1,2,3);
  return 0; 
}

结果是

V constructor.....
A constructor.....
S constructor.....
S 1 constructor.....
A 2 constructor.....
V 3 constructor.....
B 1 2 3 constructor.....
B destructor......
V destructor......
A destructor......
S destructor......
S destructor......
A destructor......
V destructor......


就是先执行虚基类,再按顺序执行父类,再按顺序执行类成员的构造,最后才是自己的构造函数执行。析构则是刚好相反哈

C++构造函数执行顺序

原文:http://blog.csdn.net/sina012345/article/details/44538625

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!