c++中如果派生类对基类继承过来的函数功能不需要扩充可不可不定义而直接调用?

派生类是不是相对与基类来说是一个功能更完善的而又独立的了? 就是说它所有的功能还需再定义了 还是它和基类是相通的了 只需再定义扩充功能 基类的功能它就会有了?

哈,我拿effective C++上的话来说吧。
有一个基类person,和两个派生类student和teacher,person里面可以定义一些函数比方说基本的功能eat(),study(),student和teacher都可以继承这两个函数(因为通用),不需要重新定义,但是新的派生类可以派生出自己独特的行为,比方说student可以有submit()提交作业功能,teacher有check()检查作业功能,这就可以分开定义了。

所以派生类可以说是完善而且独立的,基类定义的功能子类不用重复定义,但是虚函数是要重新定义的,纯虚函数在派生类必须需要定义。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-10
c++中如果派生类对基类继承过来的函数功能不需要扩充的话,可以直接使用基类中的函数。因为派生类中继承了基类的属性和方法。

如果基类中的实现和派生类中的方法实现不同的话,可以用虚函数。派生类继承了基类虚函数的接口和默认实现,但是它可以对这个虚函数重新实现。

一般来说派生类的行为不可能和基类完全一样,成员和函数都会有扩充。
第2个回答  2013-05-10
基类的功能都有,不需要定义就可以调用用基类的函数,如果重新定义了,则默认调用的是新的函数,但是你还可以用::符号指定调用基类的函数。当然要注意基类的是private 、protected、public ,稍微还有点区别。
第3个回答  2013-05-10
如果基类的函数有定义,派生类可以不用定义直接调用,如果基类的函数没有定义(纯虚函数)则派生类在调用前必须定义该函数的函数体。
第4个回答  2013-05-10
关键看那个函数是不是 纯虚函数(也就是 基础类 只是声明没有定义)。如果不是,且功能已经足够了你可以直接调用.

C++编程中 子类(派生类)能不能重写父类(基类)的函数(方法),除了虚函数...
当然可以重写,函数名和参数保持一致就会重写;如果函数名一样,参数不一样则是隐藏;总之,非虚函数,只要子类定义了相同名称的,父类函数都不能直接访问。这样的问题,自己写个Test自然明了,印象也会更深刻。

问下C++中派生类调用基类变量(public)怎么调用的?
这里你用的是继承 并且是用的public 所以是可以直接用其父类的public定义的量 即和x1中用的方法一样

C++: 虚函数的多态性 只给指向派生类的基类指针使用,而如果基类对象直接...
C++默认通过对象名访问的方式是按值访问,不是按指针和引用。 按值会导致派生类对象在向基类转换时发生截断(即去掉派生类的部分,只保留基类部分)。按指针和引用访问方式不会导致截断问题,所以可以实现多态。大家都知道在C++里这个表达式:obj1 = obj2; (obj1 和 obj2 是某个类的对象的名字。)是...

C++中,基类能引用派生类的成员函数吗?能引用派生类的对象吗?
如果基类中声明的参数相同的同名虚函数,就能引用;否则不能。基类中不能直接引用派生类的对象,同楼上的,可以把派生类当作基类来使用。

在c++中为什么基类不缺省构造时候派生类要调用基类构造函数进行初始化...
首先,C++本身就规定创建子类对象的时,先调用基类的构造函数,然后再调用自己类的构造函数。当我们的基类没有自己定义构造函数时候(就是系统默认的构造函数)时。创建子类对象会先默认调用基类的默认构造函数。但是,当我们的基类自己定义了构造函数,(可能定义了很多个)此时不会再自动生产默认构造。但是...

C++ 派生类对基类成员的重定义和名字隐藏 是怎么回事啊?
看《C++对象模型》 里面有CPP的实现细节

C++私有继承能否继承基类的私有成员的问题。
不能直接调用。其次,对于基类public类型的成员变量,无论是公有继承还是私有继承,都可以直接在派生类中定义的成员函数直接访问。对于基类private类型的成员变量,无论是公有继承还是私有继承,在派生类中定义的成员函数都不能直接访问基类的私有成员,只能通过基类的public或protect成员函数访问。

派生类是否继承基类的虚函数?
本来仅仅区别重载与覆盖并不算困难,但是C++的隐藏规则使问题复杂性陡然增加。这里“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。(2)如果派生类的函数与...

C++的基类和派生类构造函数
构造函数的调用顺序遵循从基类到派生类的自顶向下、层次结构的规则。值得注意的是,派生类构造函数只能调用直接基类的构造函数,不能调用间接基类的。因此,C++中通过派生类创建对象时必须调用基类构造函数,这是语法要求。若未指明调用基类的构造函数,系统默认会调用基类的默认构造函数(不带参数的构造函数)...

C++中派生类的构造函数怎么显式调用基类构造函数?
关于显示调用基类的构造函数,是不可行的。必须用初始化表的形式调用基类构造函数,才能正确的把子类继承下来的父类的成员初始化了。如果在子类构造函数体内显式调用了基类构造函数的话,那么该构造函数就会对一个在子类构造函数内存空间内的一个临时对象进行了初始化,因为没有取得正确的对象(子类对象)的...

相似回答