这段代码里面的const代码都有什么作用?求解释~

#include<iostream>
using namespace std;
#include<math.h>
const double pi=3.1415926;

class Shape
{
public:
virtual void Display()=0;
virtual double Area() const=0;
virtual double Volume() const=0;
void Disp();
virtual ~Shape(){};

};

class Sphere:public Shape //球体
{
public:
Sphere(double r=0.0)
{
radius=r;
}
void Display();
double Area() const;
double Volume() const;
virtual ~Sphere(){};
private:
double radius;
};

class Cuboid:public Shape //长方体
{
public:
Cuboid(double l=0.0,double w=0.0,double h=0.0)
{
length=l;
width=w;
heigth=h;
}
void Display();
double Area() const;
double Volume() const;
virtual ~Cuboid(){};
private:
double length;
double width;
double heigth;
};

class Cylinder:public Shape //圆柱体
{
public:
Cylinder(double r=0.0,double h=0.0)
{
radius=r;
heigth=h;
}
void Display();
double Area() const;
double Volume()const;
virtual ~Cylinder(){};
private:
double radius;
double heigth;
};

void Shape::Disp() //输出表面积和体积
{
cout<<"表面积="<<Area()<<endl;
cout<<"体积="<<Volume()<<endl;
}

void Sphere::Display()
{
cout<<"球半径="<<radius<<endl;
}

double Sphere::Area() const //球体表面积

double a;
a=4.0*pi*radius*radius;
return a;
}

double Sphere::Volume() const //球体体积

double a;
a=4.0/3.0*pi*pow(radius,3.0);
return a;
}

void Cuboid::Display()
{
cout<<"长方体长"<<length<<",宽"<<width<<",高"<<heigth<<endl;
}

double Cuboid::Area() const //长方体表面积

double a;
a=2.0*(length*width+width*heigth+heigth*length);
return a;
}
double Cuboid::Volume() const //长方体体积

double a;
a=length*width*heigth;
return a;
}

void Cylinder::Display()
{
cout<<"圆柱体半径"<<radius<<",高"<<heigth<<endl;
}
double Cylinder::Area() const //圆柱体表面积
{ double a;
a=2.0*pi*radius*(radius+heigth);
return a;
}
double Cylinder::Volume() const //圆柱体体积
{
double a;
a=pi*radius*radius*heigth;
return a;
}
#include "test.h"
int main()
{
int i;
Shape *ptrs[3];
ptrs[0]=new Sphere(10);
ptrs[1]=new Cuboid(12.5,5,2.5);
ptrs[2]=new Cylinder(10,10);
for(i=0;i<3;i++)
{
ptrs[i]->Display();
ptrs[i]->Disp();
}
system("pause");
return 0;
}

白衣染霜花
浏览 286回答 2
2回答

函数式编程

首先:1const&nbsp;double&nbsp;pi=3.1415926;这个表明pi是个常量。就是不能改变的量。和1#define&nbsp;pi&nbsp;3.1415926差不多,只是比define更安全。const是C++的风格。----------------------另外:&nbsp;virtual&nbsp;double&nbsp;Area()&nbsp;const=0;&nbsp;virtual&nbsp;double&nbsp;Volume()&nbsp;const=0;这定义了Area()和Volume()是常成员函数。(说句题外话,后面的“=0”表明它俩都是纯虚函数。)常成员函数有啥特点呢?呵呵,常成员函数不能更新类的成员变量(如它俩都不能更新radius的值),也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数(如它俩可以相互调用,却不能调用其他的成员函数)。还有:const是函数类型的一部分,在实现部分也要带该关键字。所以你可以看到,在下面的代码中,声明他们的时候,都带上了const.还有疑问么?请追问。

不负相思意

const就是不可修改的意思呗。。。1、因为除了初始化的时候有赋值,之后不允许改变,所以叫常量了。2、通常在定义函数时形参都定义成const类似比较多,目的就是防止在传指针或者引用时,错误地修改了原先的数据。// void do_nothing(const string& str);3、还有就是函数的返回值有用const修饰的,一般来说也都是返回引用或指针比较多,目的都是一样的,不允许其他接口去直接修改该内容;// const kind_of_class* get_this_kind_of_class();4、上面都是做前缀的,再者就是成员函数后面做后缀的;意思就是该函数不修改本class内的任何成员变量;// int just_get_some_class_info() const;差不多工作中常用的就这些个吧。&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP