码迷,mamicode.com
首页 > 其他好文 > 详细

基类与派生类的构造函数

时间:2014-08-31 00:27:40      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:os   io   div   sp   amp   on   c   ad   c++   

一、缺省构造函数的调用关系

通过下面的例子,我们来看一下基类与派生的构造函数的调用顺序。创建时先基类后派生类。销毁时先派生类后基类。

bubuko.com,布布扣

#include <iostream>
#include <string>
using namespace std;

class CBase {
    string name;
    int age;
public:
    CBase() {
        cout <<"BASE" << endl;
    }
    ~CBase() {
        cout <<"~BASE" << endl;
    }
};

class CDerive : public CBase {
public:
    CDerive() { 
        cout <<"DERIVE" << endl;
    }
    ~CDerive() { 
        cout <<"~DERIVE" << endl;
    }
};

int main ( ) 
{
    CDerive d;

    return 0;
}

 

二、有参数时的传递

当有参数时,参数必须传送给基类。注意例子中传递的方法(第8行、第19行)。

bubuko.com,布布扣

#include <iostream>
#include <string>
using namespace std;

class CBase {
    string name;
public:
    CBase(string s) : name(s) {
        cout <<"BASE: " << name << endl;
    }
    ~CBase() {
        cout <<"~BASE" << endl;
    }
};

class CDerive : public CBase {
    int age;
public:
    CDerive(string s, int a) : CBase(s), age(a) { 
        cout <<"DERIVE: " << age << endl;
    }
    ~CDerive() { 
        cout <<"~DERIVE" << endl;
    }
};

int main ( ) 
{
    CDerive d("小雅", 27);

    return 0;
}

 

三、祖孙三代的参数传递

当有三层继承时,参数要一层一层地传递下去(第30行、第19行、第8行)。

bubuko.com,布布扣

#include <iostream>
#include <string>
using namespace std;

class CBase {
    string name;
public:
    CBase(string s) : name(s) {
        cout <<"BASE: " << name << endl;
    }
    ~CBase() {
        cout <<"~BASE" << endl;
    }
};

class CDerive : public CBase {
    int age;
public:
    CDerive(string s, int a) : CBase(s), age(a) { 
        cout <<"DERIVE: " << age << endl;
    }
    ~CDerive() { 
        cout <<"~DERIVE" << endl;
    }
};

class CSon : public CDerive {
    string id;
public:
    CSon(string s1, int a, string s2) : CDerive(s1, a), id(s2) { 
        cout <<"SON: " << id << endl;
    }
    ~CSon() { 
        cout <<"~SON" << endl;
    }
};

int main ( ) 
{
    CSon s("小雅", 27,"8503026");

    return 0;
}

 

基类与派生类的构造函数

标签:os   io   div   sp   amp   on   c   ad   c++   

原文地址:http://www.cnblogs.com/notlate/p/3947146.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!