用C++怎么做呢? 定义平面二维点类CPoint

用C++怎么做呢?
定义平面二维点类CPoint,有数据成员x坐标,y坐标,函数成员(构造函数、虚函数求面积GetArea, 虚函数求体积函数GetVolume、输出点信息函数print。 由CPoint类派生出圆类Cirle类(新增数据成员半径radius),函数成员(构造函数、求面积GetArea,虚函数求体积函数GetVolume、输出圆面积信息函数print。 再由Ccirle类派生出圆柱体Ccylinder类(新增数据成员高度height),函数成员(构造函数、求表面积GetArea ,求体积函数GetVolume、输出圆柱体体积信息函数print。在主函数测试这个这三个类。 打印数据保留小数点后2位
输入格式:
点的:x坐标 点的:y坐标 圆半径 圆柱高

输出格式:
点信息 圆面积 圆柱体积

输入样例:
在这里给出一组输入。例如:

1
2
3
4
输出样例:
在这里给出相应的输出。例如:

CPoint:1,2
CirleArea:28.26
CcylinderVolume:113.04

有大佬会吗