#include <iostream.h>
//基类CBase
class CBase
{
int a;
public:
CBase(int na)
{
a=na;
cout<<"CBase constructor! ";
}
~CBase(){cout<<"CBase deconstructor! ";}
int GetA(){return a;}
}; //CBase的派生类CDerive
class CDerive : public CBase
{
int b;
public:
//将参数na传递给基类CBase
CDerive(int nb,int na):CBase(na)
{
b=nb;
cout<<"CDerive constructor! ";
}
~CDerive(){cout<<"CDerive deconstructor! ";}
int GetB(){return b;}
};
//CDerive的派生类CSubDerive
class CSubDerive : public CDerive
{
int c;
public:
//向直接基类传递参数,不负责向间接基类传递参数
CSubDerive(int nc,int nb,int na):CDerive(nb,na)
{
c=nc;
cout<<"CSubDerive constructor! ";
}
~CSubDerive(){cout<<"CSubDerive deconstructor! ";}
int GetC(){return c;}
void show()
{
//因为是公有继承,子派生类可以访问其父类和父类的父类的公有成员函数
cout<<"int the subderive class object : ";
cout<<"a = "<<GetA()<<endl;
cout<<"b = "<<GetB()<<endl;
cout<<"c = "<<GetC()<<endl;
}
}; void main()
{
CSubDerive obj(30,20,10); cout<<"call the display function of the object: ";
obj.show(); cout<<" call the interface function of the object: ";
cout<<"a = "<<obj.GetA()<<endl;
cout<<"b = "<<obj.GetB()<<endl;
cout<<"c = "<<obj.GetC()<<endl;
} 分析:
1.运行结果如下:

  

【c++】多层次继承类对象的构造函数参数的传递方法的更多相关文章

  1. c# abstract抽象类与继承类子类的构造函数_base

    http://blog.itpub.net/9240380/viewspace-718054/ http://blog.163.com/cloud_thegreat/blog/static/10367 ...

  2. java继承的对象中构造函数的调用顺序

    建立两个继承关系的对象 public class Machine { public String machieNameString; public Machine() { System.out.pri ...

  3. C++中一个类(非继承类)对象,所占内存空间大小

    离职后在家里带了半年多了,这半年多里没有编写过一行代码,倒是看过一些书,但是差不多也都是囫圃吞枣.房子也快要装修,也得赶快找一个工作了,不然养车,还要玩摄影,没收入的日子真是不好过啊.呵呵. 按惯例, ...

  4. js对象、构造函数、命名空间、方法、属性

     <script language="javascript">   var myNameSpace = new Object(); //构造一个命名 空间myCla ...

  5. 关于c++11中static类对象构造函数线程安全的验证

    在c++11中,static静态类对象在执行构造函数进行初始化的过程是线程安全的,有了这个特征,我们可以自己动手轻松的实现单例类,关于如何实现线程安全的单例类,请查看c++:自己动手实现线程安全的c+ ...

  6. Mybaits 源码解析 (八)----- 全网最详细,没有之一:结果集 ResultSet 自动映射成实体类对象(上篇)

    上一篇文章我们已经将SQL发送到了数据库,并返回了ResultSet,接下来就是将结果集 ResultSet 自动映射成实体类对象.这样使用者就无需再手动操作结果集,并将数据填充到实体类对象中.这可大 ...

  7. Python 类对象去重

    注:set 对类对象去重,在于重写__eq__方法和__hash__方法,如果没有重写__hash__会导致People类对象不是可hash的 #!/usr/bin/env python # -*- ...

  8. cout显示Mat类对象报错Access Violation

    AV(Access Violation)错误:非法访问. image_match.exe 中的 0x0000002a 处有未经处理的异常: 0xC0000005: Access violation 程 ...

  9. 一篇文章看懂java反射机制(反射实例化对象-反射获得构造方法,获得普通方法,获得字段属性)

    Class<?> cls = Class.forName("cn.mldn.demo.Person"); // 取得Class对象传入一个包名+类名的字符串就可以得到C ...

随机推荐

  1. GameObject数组

    一.声明 GameObject[] rock = ]; 二.遍历 可以先声明一个GameObject的数组GameObject[], 然后把需要遍历的对象放进去,然后可以用下面两种方式遍历:1.for ...

  2. html基础代码示例

    文档结构 <!-- 声明文档的类型 标记该文档为HTML5的文件 --> <!DOCTYPE html> <!-- 页面的根节点 --> <!-- html中 ...

  3. UVA-550

    题意 输入进制数n,第一个乘数的最后一位m,第二个乘数k,乘法的结果为mk, mk的第一位是m,求此时mk的长度 #include<iostream> #include <stdio ...

  4. HTML5 Canvas ( 创建图形对象 ) createImageData

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. leetcode447

    public class Solution { /// <summary> /// 计算两个点的距离 /// </summary> /// <param name=&qu ...

  6. Delphi 变体数组 Dataset Locate 查找定位

    Format 函数 Delphi 支持“开参数”和动态数组,变体数组,使用时的语法类似 Delphi 中的集合:采用两个方括号把不同类型的变量括起来(这太方便了啊),也可以采用声明一个 TVarRec ...

  7. discuz 修改积分策略( 在周期中添加"每周" )

    在  source/admincp/admincp_credits.php 文件中, ctrl+f 搜索  $lang['setting_credits_policy_cycletype_1'] 处, ...

  8. this指针的调整

    我们先来看一段代码: #include <iostream> using namespace std; class A { public: int a; A( ) { printf(&qu ...

  9. 一个完整的Oracle建表的例子

    建表一般来说是个挺简单的事情,但是Oracle的建表语句有很多可选的参数,有些我们可能平时不太用,用的时候又不知道怎么用,这里就写一个较完整的建表的例子: [sql] CREATE TABLE ban ...

  10. null id in entry (don't flush the Session after an exception occurs)

    null id in entry (don't flush the Session after an exception occurs) 遇到这个异常实属不小心所致,最初看到异出的错误信息时我误认为是 ...