第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這段代碼里面的const代碼都有什么作用?求解釋~

這段代碼里面的const代碼都有什么作用?求解釋~

C++ C
白衣染霜花 2021-11-25 21:15:40
#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;}
查看完整描述

2 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

首先:

1const double pi=3.1415926;

這個表明pi是個常量。就是不能改變的量。和

1#define pi 3.1415926

差不多,只是比define更安全。const是C++的風格。

----------------------

另外:


 virtual double Area() const=0; virtual double Volume() const=0;

這定義了Area()和Volume()是常成員函數。

(說句題外話,后面的“=0”表明它倆都是純虛函數。)

常成員函數有啥特點呢?呵呵,

常成員函數不能更新類的成員變量(如它倆都不能更新radius的值),也不能調用該類中沒有用const修飾的成員函數,只能調用常成員函數(如它倆可以相互調用,卻不能調用其他的成員函數)。

還有:

const是函數類型的一部分,在實現部分也要帶該關鍵字。

所以你可以看到,在下面的代碼中,聲明他們的時候,都帶上了const.

還有疑問么?請追問。



查看完整回答
反對 回復 2021-11-29
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

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;
差不多工作中常用的就這些個吧。

 


查看完整回答
反對 回復 2021-11-29
  • 2 回答
  • 0 關注
  • 346 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號