C++多继承时,多个基类函数有相同名称的变量,怎么解决?

C++多继承时,多个基类函数有相同名称的变量,怎么解决?,第1张

类C存在两个x成员,分别从A和B继承。若c是class C的实例,可以用cA::x这种用法,但cx会因为歧义引起编译错误(注意这里的成员名称解析在访问权限之前,改变访问权限无法避免歧义)。注意对于类名C直接使用成员 *** 作符“”是错误的,另外这里若x是C的static成员对象,则可以使用C::x或cx引用这个成员。(另外,LZ的访问权限语法错误,类定义之后都漏了分号,会产生编译错误。Java/C#/D用惯了- -?)

测试代码:

class A

{

public:

int x;

};

class B

{

public:

int x;

};

class C: public A, public B

{

public:

} c; //这里顺便定义一个实例。

int main()

{

cA::x++; //++只是为了防止引起“无意义语句”的编译警告,逻辑上无意义,下同。

cB::x++;

cx++; //编译错误:歧义的成员名称x。

return 0;

}

====

首相,我想说一下:Java语言与C语言本身就是两种不同思维的语言。C语言是面向过程的语言,就是我们要干一件事情,那么一步一步逐次来做,直到完成,其中可能就要调用一些函数,被调用的函数也是过程执行的。但是Java程序的开发思路是面向对象的,它是有一个类,这个类有属性,有方法。我们要干一件事的时候,就通过该类所定义的或者说是具体化的对象(Object)来调用自己的方法来完成,这里所说的方法,你也可以理解为是一个函数(类似于C语言中的),但是只不过这个方法现在是属于这个类的,属于这个对象的,是有“主人”的,只有通过它的“主人”才能调用它。而面向对象的Java有一个特点就是继承,当某一个类A继承了类B那么类A就可以使用类B的方法了,因为A继承了B,同样A的对象也可以使用B的方法了。OK?明白了么?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12156121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存