C++ 从基类调用函数
我有A班和B班C++ 从基类调用函数,c++,inheritance,C++,Inheritance,我有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(); 只需object.foo,没有
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();
只需object.foo,没有更多可添加的内容:
B object;
object.foo();
类B继承类A的公共成员,所以函数foo也属于类B,可以使用类B的对象调用
B b;
b.foo();
你需要知道它和
b.x;
请看,x和foo都是对象b的成员,即使b是类b的对象,也可能是因为在代码函数foo中,类b继承了类A的特性
注意类A只有一个成员函数foo
A a;
a.foo();
是有效的,但是
a.x;
无效
编辑:多级继承类C继承类B,类B继承类A,然后
class C : public B{
public:
int y;
};
C c;
c.foo(); // correct
这也是有效的
及
同样有效,x,y,foo都是C类的成员
注意:我告诉你的是多层次的,这是不同的。在继承的情况下,C++中的三个访问说明符是非常重要的:类B继承类A的公共成员,所以函数fo也属于B类,可以用B类对象调用。p>
B b;
b.foo();
你需要知道它和
b.x;
请看,x和foo都是对象b的成员,即使b是类b的对象,也可能是因为在代码函数foo中,类b继承了类A的特性
注意类A只有一个成员函数foo
A a;
a.foo();
是有效的,但是
a.x;
无效
编辑:多级继承类C继承类B,类B继承类A,然后
class C : public B{
public:
int y;
};
C c;
c.foo(); // correct
这也是有效的
及
同样有效,x,y,foo都是C类的成员
注意:我告诉你的是多层次的,这是不同的。在继承的情况下,C++中的三个访问说明符是非常重要的:你有什么问题?这是非常基本的,你应该简单地尝试一下。更不用说阅读了……我强烈建议您转到我在回答中添加的关于C++中私有继承、公共继承和受保护继承之间的区别的最后一个链接。您有什么问题?这是非常基本的,你应该简单地尝试一下。更不用说阅读了…我会非常鼓励你去我在我的答案中添加的最后一个链接,关于C++中的私有、公共和受保护继承的区别。