C++ 从基类调用函数

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,没有

我有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,没有更多可添加的内容:

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++中的私有、公共和受保护继承的区别。