C++小知识点

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++小知识点)