public继承
C++中为防止大量的代码重复,使用了继承机制,子类继承父类的函数和属性,子类对象可以调用父类的public函数和属性,子类是对父类的一种扩展,当一些类有一些共同的函数或者属性,我们便可以使用继承机制,将这些函数集成到父类中,减少代码的重复性
using namespace std;
class entity{
public:
int x = 0,y = 0;
void move(int x_, int y_){
x += x_;
y += y_;
cout << "x = " << x << endl;
cout << "y = " << y << endl;
}
};
class sub :public entity{
public:
string name;
sub(const char *_name):name(_name){
};
void print(){
cout << name << endl;
};
};
int main(int argc, char *argv[])
{
ros::init(argc,argv,"log");
sub s("hello");
s.print(); //调用子类的方法
s.move(1,2); //调用父类的方法
}
程序的运行结果如下
虚函数
什么时候会用到虚函数呢?
父类的指针除了指向父类的对象外,还可以指向子类的对象,当其指向子类的对象时默认会调用父类的函数,当我们想调用子类的同名函数时,就需要将父类的同名函数设置为虚函数
class entity{
public:
virtual void print(){ //父类虚函数
cout << "parent function has been called !" << endl;
}
};
class sub :public entity{
public:
void print() override{//子类重写基类虚函数
cout << "subclass function has been called !" << endl;
};
};
void classprint(entity* point){
point->print();
}
int main(int argc, char *argv[])
{
entity* p = new entity();
classprint(p);
sub * s = new sub();
classprint(s);
}
代码的运行结果如下