从派生类对象相同的签名FN访问基类
-
18-09-2019 - |
题
是否有可能访问具有相同的签名,使用一个派生类对象的派生类功能的基类函数?这里就是我下面陈述的样本..
class base1 {
public:
void test()
{cout<<"base1"<<endl;};
};
class der1 : public base1 {
public:
void test()
{cout<<"der1"<<endl;};
};
int main() {
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
解决方案
您需要的,因为它与继承的一个冲突完全限定的方法名。
使用obj.base1 ::测试()
其他提示
您无法在派生类中重写的方法,如果你没有提供的虚拟键字。
class base1
{
public:
void test()
{
cout << "base1" << endl;
};
};
class der1 : public base1
{
public:
void test()
{
cout << "der1" << endl;
};
};
int main()
{
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
所以上面的代码是错误的。你必须给:
virtual void test();
在您的基类
可以使用这样的:
((base)obj).test();
不隶属于 StackOverflow