注册 登录
编程论坛 C++教室

C++中派生类能继承基类的构造函数和析构函数吗?

全世界安静 发布于 2012-07-25 13:05, 8632 次点击
如题!能否举例体现一下?
13 回复
#2
liudw22012-07-25 13:25
可以的
#include <iostream>
using namespace std;

class Person
{
public:
    Person()
    {
        cout << "Person's constructor is invoked" << endl;
    }
    ~Person()
    {
        cout << "Person's destructor is invoked" << endl;
    }
};

class Employee:public Person
{
public:
    Employee()
    {
        cout << "Employee's constructor is invoked" << endl;
    }
    ~Employee()
    {
        cout << "Employee's destructor is invoked" << endl;
    }
};

int main()
{
    Employee emloyee;

    return 0;
}
#3
hellovfp2012-07-25 14:36
木有这种说法。
基类是基类的,派生类是派生类的。
你可以去读读《深入C++对象模型》一书。
#4
lz10919149992012-07-25 21:11
3楼正解,2楼纯属乱讲,之所以会打印出基类构造函数里的字符串,是因为子类构造函数会调用基类的构造函数。

[ 本帖最后由 lz1091914999 于 2012-7-25 21:24 编辑 ]
#5
liudw22012-07-25 21:22
回复 4楼 lz1091914999
嗯,受教了。。
#6
pangding2012-07-26 00:26
确实是很容易令人混乱的概念。感觉楼主问的好多问题都很犀利。
#7
liudw22012-07-26 10:12
说明LZ看书很认真啊,我就没发现这个问题。
#8
zhuanjia02012-07-28 18:27
构造函数和析构函数不能被继承。
#9
伊川2012-08-04 09:45
不能,多重继承派生类的构造函数只是在初始化表中包含多个基类构造函数,析构函数更加不能继承
#10
小小珊玉2012-08-04 20:09
当然不能被继承,上课的时候老师还特意强调了!
#11
lyp8809242012-08-05 14:20
以下是引用小小珊玉在2012-8-4 20:09:35的发言:

当然不能被继承,上课的时候老师还特意强调了!
不能继承,我是这样理解的,之所以继承,是子类包含基类的特征,而又有自己所特有的特征,比如成员变量,既然多了成员变量,而构造函数又是对成员变量的初始化,继承基类的构造函数,必然无法包含子类特有的成员变量,也就无法对其初始化,而成员变量被分配内存后不按照自己的要求进行初始化,是不可以的,所以构造函数不能够被继承。个人理解,还望多多指教。
#12
zx3965356332012-08-14 23:43
又清晰了一个点~楼主多多来问题
#13
best_12012-08-15 14:41
基类构造函数和析构函数是不能被继承的,可以把基类的构造函数设为虚函数 当做一个接口,由子类分别来实现这个函数
#14
会分手的空气2012-08-20 19:44
绝对不能
1