1

我有A班和B班。

class A{
public:
    foo();
};

class B : public A{
public:
    int x;
};

假设测试文件中有一个来自 B 类的对象。我应该如何调用 foo 函数?

object.foo(); // or
object.A::foo();

其他问题:我们什么时候调用这样的函数?如果我做多重继承怎么办?

4

2 回答 2

3

很简单object.foo(),没有什么要补充的了:

B object;
object.foo();
于 2013-03-19T16:49:08.777 回答
1

B 类继承了 A 类的公共成员,所以函数foo()也属于 B 类,可以使用 B 类的对象调用。

B b;
b.foo();

您需要了解C++ 中的继承。它和

b.x; 

看到x并且foo()两者都是对象的成员,b甚至b是 B 类的对象,它可能是因为 B 类继承自 A 类的特性,在您的代码函数foo()中。

注意A 类只有一个成员函数 foo()

A a;
a.foo(); 

有效,但是

a.x; 

无效

编辑: 多级继承C类继承B类,B类继承A类,然后

class C : public B{
public:
    int y;  
};

C c;
c.foo();  // correct

也是有效的。

c.x;
c.y;

同样有效的, x, y,foo()都是 C 类的成员。

注意:我告诉你的是C++ 中的多级多重继承是不同的。在继承的情况下,C++ 中的三个访问说明符也非常重要:c++ 中的 public private protected

于 2013-03-19T16:52:17.283 回答