我有A班和B班。
class A{
public:
foo();
};
class B : public A{
public:
int x;
};
假设测试文件中有一个来自 B 类的对象。我应该如何调用 foo 函数?
object.foo(); // or
object.A::foo();
其他问题:我们什么时候调用这样的函数?如果我做多重继承怎么办?
我有A班和B班。
class A{
public:
foo();
};
class B : public A{
public:
int x;
};
假设测试文件中有一个来自 B 类的对象。我应该如何调用 foo 函数?
object.foo(); // or
object.A::foo();
其他问题:我们什么时候调用这样的函数?如果我做多重继承怎么办?
很简单object.foo()
,没有什么要补充的了:
B object;
object.foo();
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