美文网首页
C++小知识点

C++小知识点

作者: 星月西 | 来源:发表于2017-05-02 19:18 被阅读16次

1.C++中类可以多继承

即一个子类继承多个父类,而在C#和java中,可以多继承多个接口,但是不能多继承多个基类。
主要是考虑到多继承的父类如果继承同一个基类,那么就会产生二义性的问题,例如:

class A 
{
public:
    int a = 1;
};

class B
{
public: 
    int a = 2;
};

class C :public A, public B
{
public:
    void print() const
    {
        cout << a << endl;
    }
};

int main()
{
    C c;
    c.print();
    return 0;
}

这一段代码会在编译时报错,其中读取变量a时,可能是基类A中的变量也有可能是基类B中的变量,会有二义性的问题,改正的方法是在使用变量a时,显示指明其位于哪个基类A::a
另外为了避免这种容易犯错的写法,应该尽量不适用多继承类,一个不好的范例就是C++的iostream类,就是一个菱形继承,包含头文件过多效率低下,且不容易扩展,需要时刻主要到其菱形继承的问题。

相关文章

网友评论

      本文标题:C++小知识点

      本文链接:https://www.haomeiwen.com/subject/ankhtxtx.html