zoukankan      html  css  js  c++  java
  • 错误的模糊应用(类继承问题)

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

    当类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访问基类的成员变量时无二义性错误。

  • 相关阅读:
    Backbone学习记录(6)
    Backbone学习记录(5)
    Backbone学习记录(4)
    PHP中抽象类,接口定义
    php和js中json的编码和解码
    jquery中 dom对象与jQuery对象相互转换
    js post跳转
    javascript中的三种弹窗
    出现多个sessid
    php中cookie的操作
  • 原文地址:https://www.cnblogs.com/0405mxh/p/10125478.html
Copyright © 2011-2022 走看看