加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

读C++ Primer 之构造函数圈套

发布时间:2021-11-25 19:27:33 所属栏目:教程 来源:互联网
导读:读C++ Primer 之构造函数陷阱 /* * author:xizero00 * mail: xizero00@163.com * date:2011-08-07 21:00:59 * constructor trap */ #include iostream using namespace std; class Base { public: //默认构造函数 Base(): d( 0 ) {} //带一个参数的构造函数

读C++ Primer 之构造函数陷阱
 
/*
* author:xizero00
* mail: xizero00@163.com
* date:2011-08-07 21:00:59
* constructor trap
*/   
  
#include <iostream>   
  
using namespace std;  
  
  
class Base  
{  
public:  
    //默认构造函数   
    Base(): d( 0 ) {}  
      
    //带一个参数的构造函数   
    Base( int val ) : d( val ) { cout << "基类构造函数: val = " << val << endl; }  
public:  
    int d;  
};  
  
  
class Inherit : public Base  
{  
public:  
    //默认构造函数   
    Inherit():Base() {}  
      
    //带一个参数的构造函数   
    //在执行此构造函数的时候会调用基类的相应的构造函数   
    //但是,问题就出在这个继承下来的d,它并没有被初始化,这里必须要注意!   
    Inherit( int v ): Base( v + d ) { cout << "子类构造函数: v = " << v << " d = " << d << endl; }  
      
      
};  
  
  
int main( int argc , char **argv )  
{  
    Inherit i( 1 );  
    return 0;  
}  
将文件存为trap.cc
 
编译命令为:
 
g++ trap.cc -o trap -g  
执行结果为:
 
基类构造函数: val = 12382197  
子类构造函数: v = 1 d = 12382197  

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读