64,702
社区成员
发帖
与我相关
我的任务
分享
我觉得不能用覆盖这个词,原因是:尽管基类的成员函数与派生类的成员函数完全相同,派生类对象也是可以访问基类的中成员函数的,请看下面的代码:
#include <iostream>
class Base
{
public :
void display ()
{
std::cout << "I am Base class !" << std::endl ;
}
} ;
class Derive : public Base
{
public :
void display ()
{
std::cout << "I am Derive class !" << std::endl;
}
} ;
int main()
{
Derive d ;
d.Base::display () ; // 基类的display并没有被覆盖,还是隐藏,依然可访问。
return EXIT_SUCCESS ;
}
/*
I am Base class !
Press any key to continue
*/
class Base
{
public:
virtual void display() const
{ std::cout << "I am Base class,but const !" << std::endl; }
virtual void display()
{ std::cout << "I am Base class ,but not const !" << std::endl; }
virtual ~Base(){}
};
class Derive: public Base
{
public:
virtual void display()
{ std::cout << "I am Derive class !"<< std::endl; }
virtual ~Derive(){}
};
int main()
{
Base* pBase = new Derive();
Derive* pDerive = new Derive();
pBase->display();
pDerive->display();
delete pBase;
delete pDerive;
Base const * pBase2= new Derive();
pBase2->display();
delete pBase2;
return 0;
}
#include <iostream>
class Base
{
public :
virtual void display () const
{
std::cout << "I am Base class !" << std::endl ;
}
virtual ~Base()
{
}
} ;
class Derive : public Base
{
public :
virtual void display ()
{
std::cout << "I am Derive class !" << std::endl;
}
virtual ~Derive()
{
}
// 要const Derive d ;可以d.display ();须加以下代码
void display () const
{
Base::display () ;
}
} ;
int main()
{
Base* pBase = new Derive() ;
Derive* pDerive = new Derive() ;
pBase->display() ;
pDerive->display() ;
delete pBase ;
delete pDerive ;
const Derive d ;
d.display () ;
return EXIT_SUCCESS ;
}
/*
I am Base class !
I am Derive class !
Press any key to continue
*/