首页 > 其他 > 详细

虚基类构造函数执行顺序

时间:2015-04-18 12:44:12      阅读:260      评论:0      收藏:0      [点我收藏+]

#include <iostream>

using namespace std;

class stream

{

public:

  stream(){cout<<"stream constructer"<<endl;

  ~stream(){cout<<"stream destructer"<<endl;

};

 

class iistream : virtual stream

{

public:

  iistream(){cout<<"iistream constructer"<<endl;

  ~iistream(){cout<<"iistream destructer"<<endl;

};

 

class oostream : virtual stream

{

public:

  oostream(){cout<<"oostream constructer"<<endl;

  ~oostream(){cout<<"oostream destructer"<<endl;

};

 

class iiostream:public iistream, public oostream

{

public:

  iiostream(){cout<<"iiostream constructer"<<endl;

  ~iiostream(){cout<<"iiostream destructer"<<endl;

};

 

int main()

{

  iiostream oo;

  return 0;

}

 

输出结果:

stream constructer

iistream constructer

oostream constructer

iiostream constructer

 

iiostream deconstructer

oostream deconstructer

iistream deconstructer

stream deconstructer

 

解释:

1. 虚基类构造函数会最先执行;

2. 派生类istream、ostream、iiostream都含有一个指向虚基类的vptr;

 

虚基类构造函数执行顺序

原文:http://www.cnblogs.com/hj-blog/p/4437049.html

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