本文主要是介绍基础语法——组合与继承,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
继承
定义派生类,即继承的一般语法结构如下
class 派生类名 : [继承方式] 基类名
{
};
例如
class Point{int x, y;
public:Point(int a=0, int b=0): x(a), y(b){}virtual double area() {return 0.0; };virtual double volume() { return 0.0; }
};
class Circle: public Point{...
};
class Cylinder: public Circle{...
};
虚函数
虚函数体现了多态性
通过关键字virtual将基类的函数声明为虚函数,允许派生类重写(覆盖)该函数
例
class Point{int x, y;
public:Point(int a=0, int b=0): x(a), y(b){}virtual double area() {return 0.0; };virtual double volume() { return 0.0; }
};
override说明符
override说明符显式声明了派生类中的一个成员函数重写、覆盖(override)了一个基类中的虚函数
例
class Point{int x, y;
public:Point(int a=0, int b=0): x(a), y(b){}virtual double area() {return 0.0; };virtual double volume() { return 0.0; }
};
class Circle : public Point
{
public:double radius;Circle(double _radius, int a = 0, int b = 0) : radius(_radius), Point(a, b){};virtual double area () override{return pi * radius * radius;}virtual double volume() override{return 0.0;}
};class Cylinder : public Circle
{
public:double height;Cylinder(double _height, double _radius, int a = 0, int b = 0) : height(_height), Circle(_radius, a, b){};virtual double area () override{return 2 * Circle :: area() + 2 * pi * radius * height;}virtual double volume() override{return Circle :: area() * height;}
};
P.S.:如果基类中成员函数没加virtual说明符,那么你在派生类中重写该成员函数时候就不用加override说明符,直接重写就可以
这篇关于基础语法——组合与继承的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!