c++派生类中有与基类同名变量

在派生类中有与基类同名的变量和函数,这时编译器不报错,这时使用这些变量和函数时用的是哪个,是基类中的还是派生类中的(这变量和函数属性可以不同)

如果B是从A派生的
都有一个int c;
B::c,用的是B自己的
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-30
那取决于是公有变量还是私有变量,公共继承还是私有继承吧!还有,派生类的优先级应当高一些!
第2个回答  2009-07-30
你自己在书上找,虚函数,能告诉你不错了

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

C++中如果子类一个变量与基类的某个变量重名了怎么办
访问父类中的a需要通过A::来访问

c++中的虚函数是什么?
C++中的虚函数是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多...

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

函数隐藏函数的覆盖和隐藏的区别举例
在C++中,函数的覆盖和隐藏是两个关键概念,它们在继承和多态性中起着重要作用。函数覆盖是指派生类中对基类中的虚函数进行重写,而隐藏则是指派生类中存在与基类同名但非虚函数的情况,导致基类的同名函数被遮盖。函数覆盖的条件包括:基类的函数必须声明为虚函数(使用virtual关键字),派生类和基类中...

C++多继承时,多个基类函数有相同名称的变量,怎么解决?
类C存在两个x成员,分别从A和B继承。若c是class C的实例,可以用c.A::x这种用法,但c.x会因为歧义引起编译错误(注意这里的成员名称解析在访问权限之前,改变访问权限无法避免歧义)。注意对于类名C直接使用成员操作符“.”是错误的,另外这里若x是C的static成员对象,则可以使用C::x或c.x引用...

c++类成员函数的重载,覆盖和隐藏有什么区别
关键字可有可无。2.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。3.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不...

关于C++中的二义性
即派生类中的函数遮挡住基类中的同名函数,这并不是所谓的二义性,其实两个函数都存在,只是编译器发现当前作用域内的函数名时,就停止了 进一步向外层作用域搜索。想调用基类的函数,可以前边加上类名,如此例中d.C::a()或d.A::a()在实际应用中,这种情况是应该避免的,一般覆盖(override)的...

在C++中,双冒号(::)的用法
其次,它用于类的作用域限定,指定类的成员(函数或变量),在类的成员函数或静态成员函数中引用类成员时,双冒号限定该成员所属类。双冒号还有助于访问基类中的成员。在派生类中存在与基类同名的成员时,使用双冒号可访问基类的成员。在枚举类型中,双冒号用于访问枚举成员,具体使用方式取决于上下文。此...

c++中的二义性是什么意思
二义性问题 在继承时,基类之间、或基类与派生类之间发生成员同名时,将出现对成员访问的不确定性——同名二义性。当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生另一种不确定性——路径二义性。例子:一、同名二义性 基类B1和基类B2都存在一样的...

相似回答