C++中,爷类跟父类有相同的函数,用子类对象调用时会产生两义性吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中,爷类跟父类有相同的函数,用子类对象调用时会产生两义性吗?相关的知识,希望对你有一定的参考价值。
爷类本身有这个函数。父类本身也有与爷类相同的函数。
那么子类如 C c ; 然后调用这个函数如: c.hello();
这样调用的是哪个函数呢?会产生两仪性吗
子类和父类有相同名称,相同参数的函数,
就相当于在子类中已经覆盖了父类的这个函数。
你上边说的例子中,
父类已经把爷类的同名函数给覆盖掉了,
所以如果直接使用,
子类中调用的函数必定是父类中的函数。
不会产生二义性。 参考技术B 一般来说,如果爷类和父类有相同名称的函数,会将该函数申明为虚函数。
你这个问题,不管这个函数是不是虚函数都会调用父类的函数。因为子类调用某个函数,首先在自己的函数表中查找,如果没有,则到父类中去找;如果找不到,则到父类的父类中去找……本回答被提问者采纳 参考技术C c++不允许多继承.所以你子类继承了父类,调用的当然是父类的hello函数. 参考技术D 子类重写了就调用了子类自己方法.
没重写都是一样继承的父类,没什么区别.
关于C++父类与子类之间变量的问题
假如父类有两个变量,父类有两个子类继承这两个变量,现在我想让这两个子类中继承的变量变为静态的该怎么办呢,而且在这两个子类在继承父类变量时赋值的都不一样
参考技术A 不可以改变继承的变量的控制权限,从静态变成局部,从局部变成静态,即使是public和protected,也只能从高到低。 参考技术B #include<stdio.h>class father
public:
int a,b;
;
class sn1 :public father
public:
static int a;
static int b;
;
int sn1::a = 10;
class sn2 :public father
public:
static int a;
static int b;
;
int main()
sn1 m_sn1; printf("[%d] \n",m_sn1.a);
return 0;
输出:[10]
你可以试一下。本回答被提问者和网友采纳
以上是关于C++中,爷类跟父类有相同的函数,用子类对象调用时会产生两义性吗?的主要内容,如果未能解决你的问题,请参考以下文章