C++中的虚函数的理解和使用
2017-05-26 17:15
411 查看
关于C++中的纯虚函数,使用方法个人理解就像是java中的interface一样, 使用规则为 1.在基类中定义虚函数。 2.在派生类中通过函数覆盖来定义同名的函数。 3.定义基类的指针并调用该函数。
#include "stdafx.h" #include<iostream> using namespace std; const double PI = 3.1415926; class Container { protected: double radius; public: Container(double r);//抽象类Container的构造函数 virtual double surface_area() = 0;//纯虚函数surface_area 表面积 virtual double volume() = 0;//纯虚函数volume 体积 }; Container::Container(double r) { radius = r; } class Sphere:public Container { public: Sphere(double); double surface_area(); double volume(); }; Sphere::Sphere(double r):Container(r) { radius = r; } double Sphere::surface_area() { return 4 * PI*radius*radius; } double Sphere::volume() { return (4 / 3)*PI*radius*radius*radius; } class Cylinder :public Container { public: Cylinder(double,double); double surface_area(); double volume(); private: double height; }; Cylinder::Cylinder(double r,double h) :Container(r) { height = h; radius = r; } double Cylinder::surface_area() { return PI*radius*radius * 2 + 2 * PI*radius*height; } double Cylinder::volume() { return PI*radius*radius*height; } class Cube :public Container { public: Cube(double); double surface_area(); double volume(); }; Cube::Cube(double r) :Container(r) { radius = r; } double Cube::surface_area() { return 6 * radius; } double Cube::volume() { return radius*radius*radius; } int main() { Container *s = new Sphere(5.0); Container *c = new Cylinder(5.0,6.0); Container *cube = new Cube(6.0); cout << "计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积." << endl; cout << "球体表面积为: " << s->surface_area()<<endl; cout << "球体体积为: " << s->volume()<<endl; cout << "圆柱体表面积为: " << c->surface_area() << endl; cout << "圆柱体体积为: " << c->volume() << endl; cout << "正方体表面积为: " << cube->surface_area() << endl; cout << "正方体体积为: " << cube->volume() << endl; system("pause"); return 0; }
相关文章推荐
- C++多态及虚函数的理解和使用
- C++中函数对象的使用
- C++常用字符串处理函数及使用示例
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- [C++] 使用const提高函数的健壮性
- c++多重继承和虚继承及虚函数深入理解
- 我的理解:在有返回值的函数内是否应该使用异常处理?欢迎大家斧正
- 使用C++异常来取代exit()函数
- C++常用字符串处理函数及使用示例(ASCII)
- c++中函数指针的使用方法
- [转]浅析C++中虚函数的调用及对象的内部布局(利用汇编深刻理解C++虚函数底层实现机制)
- C++常用字符串处理函数及使用示例
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- 关于C++中函数指针的使用
- C++常用字符串处理函数及使用示例
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- C++常用字符串处理函数及使用示例
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- C++ qsort example.C++ 快排函数使用示例
- 使用Delphi声明C++带函数的结构体实战