C++ 子类重写父类函数时调用父类函数方式
class Parent // 做父类
{
public:
Parent(){
}
void print(){
std::cout << "parent" << std::endl;
}
};
class Child : public Parent // 做子类
{
public:
Child():Parent(){
}
void print(){
std::cout << "child" << std::endl;
Parent::print(); // 这里调用父类接口
}
};
int main()
{
Child *a = new Child(); // 都可以
a->print();
return 0;
}
class Parent // 做父类
{
public:
Parent(){
}
void print(){
std::cout << this << std::endl;
std::cout << "parent" << std::endl;
}
};
class Child : public Parent // 做子类
{
public:
Child():Parent(){
}
void print(){
std::cout << "child" << std::endl;
}
void print1(){
std::cout << this << std::endl;
std::cout << "child1" << std::endl;
}
};
int main()
{
// 实例化1
Parent *a = new Child(); // 实例化父类 或 Parent *a = new Parent();
a->print(); // 调用父类函数,输出:parent
static_cast<Child*>(a)->print1(); // 输出:child1
// 实例化2
Child *b = new Child(); // 实例化子类
b->print(); // 调用子类函数,输出:child
b->Parent::print(); // 调用父类函数,输出:parent
return 0;
}