派生类函数如何调用基类的函数?
how can a derived class function call a function of the base class?
当访问说明符为private时,派生类函数甚至不能访问基类的public成员。但是,我的派生类的函数' xyz
'如何能够调用' showofb
'?我甚至通过调用c的构造函数' showofb
'来尝试它。在这两种情况下,它都有效。如何能够调用函数' showofb
' ?
class B
{
public:
B()
{
cout<<":B:"<<endl;
}
void showofb()
{
cout<<"show of b"<<endl;
}
};
class C : private B
{
public:
C()
{
cout<<":C:"<<endl;
}
void xyz()
{
showofb();
}
};
int main()
{
C c1;
c1.xyz();
}
私有继承将父类的public成员继承为子类的Private成员。类可以调用自己的或继承的私有成员。
考虑一下:
class B
{
public:
B()
{
cout<<":B:"<<endl;
}
void showofb()
{
cout<<"show of b"<<endl;
}
};
class C : private B
{
public:
C() {}
};
class D : public B
{
public:
D(){};
}
int main()
{
C c1;
c1.showofb(); // WONT WORK
D d1;
d1.showofb(); // WILL WORK
}
B::showofb()
是一个公共函数。所以它可以被C
调用。如果你修改B
使showofb
私有,C
将不能再调用它。
私有继承意味着B
的所有public和protected成员都被C
作为私有继承。因此,C
仍然可以调用B
的public和protected成员,但是任何从C
派生的类将不能调用B
的成员。
user1001204,您似乎对私有继承有一个错误的概念。类C
通过私有继承从类B
继承,这意味着继承关系对使用类C
的任何东西都是隐藏的。私有继承并不隐藏C
类内部的继承关系。
相关文章:
- 虚拟基类函数中派生类的大小
- 无法访问基类函数 C++
- 如何使派生类函数在调用时始终调用相同的基类函数?
- C++虚拟函数:基类函数是调用的,而不是派生的
- Qt基类函数定义
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- 有没有办法调用基类函数,该函数在使用私有继承的派生类中被覆盖?
- C++ - 基类函数指针调用的替代方法
- 什么更有效率?在重载函数中或通过在基类函数中检查对象类型来实现
- 重载基类函数是不好的做法吗?
- 在 qml 中公开基类函数
- 调用基类函数时强制使用类名?
- 如何判断哪个派生的类对象称为基类函数
- 获取具有基类函数的派生类
- 有没有办法从基类函数参数中推断出模板参数
- 私有非虚拟基类函数被称为派生类中的函数
- 模板基类函数成员的别名
- 如何用相同的签名从main调用基类函数
- C++ 如何从 main 调用派生的基类函数
- memcpy派生类到基类,为什么还调用基类函数