c++继承父类的子类,如何调用父类的同名函数?

我是初学者
所以给点注释比较好

class a
{
public:
int x;
void a(){cin>>x;};
}

class b::public a
{
public:
int y=1;
void a(){cout<<y;}
}

子类调用父类的同名函数:

    子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数。

    子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐藏了,也可以强制调用父类的同名函数class::funtion_name。

    子类和父类参数不同,函数名相同,有virtual关键字,则不存在多态性,子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐藏了,也可以强制调用父类的同名函数class::funtion_name。

    子类和父类返回值不同,参数相同,函数名相同,有virtual关键字,则编译出错error C2555编译器不允许函数名参数相同返回值不同的函数重载。

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-03-22
b B
B.a::a();
不知道为什么要这么做,子类覆盖了父类的方法后又要去调用他,完全没有实用的意义。上面的方法虽然可以,但是确破坏了封装。

补充两句,上面的程序错误太多了,类的成员是不能直接做初始化操作的,类结束没有给分号,与类名同名的函数为构造函数,不可以携带类型做声明等等,问题很多啊。本回答被提问者和网友采纳
第2个回答  2008-03-22
a A;//申明父类的对象
A.a();//调用

c++继承父类的子类,如何调用父类的同名函数?
子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐藏了,也可以强制调用父类的同名函数class::funtion_name。子类和父类参数不同,函数名相同,有virtual关键字,则不存在多态性,子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐...

C++中子类继承父类,为何可以在子类和父类中命名相同名字的函数?
如果是虚函数,而且派生类的函数签名与基类的签名一致,那么,基类的该同名函数指针已经被覆盖了,所以,就不可能再调用到基类的同签名函数了。非虚函数才可以使用上面的方面来调用。

C++如何调用父类的方法?
C++通过子类调用父类函数fun();子类和父类函数名一样的函数fun,如果参数不一样,不管加不加virtual,当子类调用fun()时,会先在子类中找,找不到会报错。C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点...

父类指针指向子对象,父类和子类有同名函数,但不是虚函数,当这个指着指 ...
虽然是通过基类指针调用,但是由于不是虚函数,所以不会实现多态,所以还是静态调用,通过指针类型来确定,所以调用的是父类函数!

关于c++中子类在析构时默认调用父类的析构方法
假设父类有多个构造函数,你可以指定使用哪一个构造函数,但是依然是父类构造函数先被调用。(或者父类没有默认构造函数,都是带参数的,这个时候必须指定用哪一个)如果你不写构造和析构函数,编译器会默认给你生成一个空的。绝对不要在子类析构函数中显式调用父类的析构函数,因为编译器会插入一段...

C++中父类和子类的成员函数同名同参数同返回只是父类里面是虚函数,子类...
没有问题,这就是虚函数的作用,子类中可以override(重写)父类中的虚函数,给出子类自己的实现方法,子类中其实省略了父类函数声明前的virtual,子类中加上virtual也是没有问题的,可有可无。

C++ 的using 与继承
C++的public继承允许子类直接访问和调用基类的成员函数。然而,继承时可能会遇到构造函数或子类与基类存在同名函数的冲突问题。例如:在实现基类和子类间的函数重用时,当参数数量增加时,直接调用基类函数变得复杂,这时可以引入using声明。使用using后,子类可以直接调用基类的成员函数,如:这样简化了代码,避免...

C++中子类的变量能不能覆盖父类的变量?
1 子类和父类没有同名成员变量。此种情况下不会出现任何情况的覆盖。2 在父类中,有virtual修饰的虚成员变量,在子类中有与其同名同类型的成员变量。此种情况下,子类变量会覆盖父类变量。3 在父类中,存在有与子类同名同类型的成员变量,但没有virtual修饰。此时不会覆盖,但是会重写。即子类中访问...

C++:继承中的同名覆盖原则是什么意思?
当派生类与基类有相同成员时,例如:有一个基类Class A, A类里有个成员函数 int fun(),类B继承了类A,类B也有个成员函数,int fun(),在实现部分里,在调用下函数fun()下,由于基类和派生类的函数名一样,系统无法按原则(原则:先基类,然后对象,最后派生类)调用,就覆盖了。

...的问题,继承时候子类中若有与父类里函数同名的函数,不是会覆盖父...
覆盖的条件是:基类必须是虚函数(virtual声明的),发生覆盖的两个函数9要在派生类和基类中,函数名称和参数列表完全相同。你上面的这种情况没有用virtual,基类的函数被隐藏,不是覆盖。你回去可以看看多态那一张,好好复习下

相似回答