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

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

這段代碼里面的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 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

首先:

1const double pi=3.1415926;

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

1#define pi 3.1415926

差不多,只是比define更安全。const是C++的風(fēng)格。

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

另外:


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

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

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

常成員函數(shù)有啥特點(diǎn)呢?呵呵,

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

還有:

const是函數(shù)類型的一部分,在實(shí)現(xiàn)部分也要帶該關(guān)鍵字。

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

還有疑問么?請追問。



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

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

const就是不可修改的意思唄。。。
1、
因?yàn)槌顺跏蓟臅r(shí)候有賦值,之后不允許改變,所以叫常量了。
2、
通常在定義函數(shù)時(shí)形參都定義成const類似比較多,目的就是防止在傳指針或者引用時(shí),錯(cuò)誤地修改了原先的數(shù)據(jù)。// void do_nothing(const string& str);
3、
還有就是函數(shù)的返回值有用const修飾的,一般來說也都是返回引用或指針比較多,目的都是一樣的,不允許其他接口去直接修改該內(nèi)容;// const kind_of_class* get_this_kind_of_class();
4、
上面都是做前綴的,再者就是成員函數(shù)后面做后綴的;意思就是該函數(shù)不修改本class內(nèi)的任何成員變量;// int just_get_some_class_info() const;
差不多工作中常用的就這些個(gè)吧。

 


查看完整回答
反對 回復(fù) 2021-11-29
  • 2 回答
  • 0 關(guān)注
  • 365 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號