错误的模糊应用(类继承问题)

Posted 0405mxh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误的模糊应用(类继承问题)相关的知识,希望对你有一定的参考价值。

当继承关系出现菱形继承时,可能出现二义性

技术分享图片

当类me访问基类human的公共变量成员时,系统将不知道通过哪个上一层类访问该成员变量,因为Chinese和woman都从human继承了成员变量,此二义性错误。

【实现过程】

  上述二义性现象可以通过虚继承避免,它的格式如下:

 

class A
{};
class B virtual public A
{};

本实例实现的具体代码如下:

#include<iostream>
#include<string>
using namespace std;
class human
{
public:
	bool getBeauty()
	{
		return m_beauty;
	}
	bool m_beauty;
};
class Chinese:virtual public human
{
};
class woman:virtual public human
{
};
class me:public Chinese,public woman
{
public:
	me(bool a)
	{
		m_beauty=a;
	}
};
void main()
{
	me _me(true);
	cout<<_me.getBeauty()<<endl;
}

【代码解析】

  第04~12行是基类human的定义体,其中有成员变量m_beauty和成员函数getBeauty()。第13~18行是子类Chinese和woman,虚继承自基类human。第19~26行是类me多继承与Chinese和woman。由于虚继承,所以当类me的对象_me访问基类的成员变量时无二义性错误。

 

以上是关于错误的模糊应用(类继承问题)的主要内容,如果未能解决你的问题,请参考以下文章

抽象基类的模糊继承:

当在其层次结构中具有菱形继承的类的多重继承时,函数的模糊继承

继承会影响应用程序的性能吗?

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

Java中super关键字的作用与用法

二进制 XML 文件第 1 行:Xamarin Android 中 Google Maps 的类片段错误膨胀错误