国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C++習題與解析(類和對象-07)

2019-11-17 05:44:19
字體:
來源:轉載
供稿:網友

題12. 分析以下程序的執行結果
#include<iostream.h>
class Sample
{
public:
int x;
int y;
void disp()
{
cout<<"x="<<x<<",y="<<y<<endl;
}
};

void main()
{
int Sample::*pc;
Sample s,*p=&s;
pc=&Sample::x;
p->*pc=10;
pc=&Sample::y;
p->*pc=20;
p->disp();
}

解:
本題說明了類數據成員指針的使用方法。這里通過指向對象的指針來給類數據成員賦值,其原理與上題相似。輸出為:
x=10,y=20
------------------------------------------------------題13.分析以下程序的執行結果
#include<iostream.h>
class Sample
{
int x;
int y;
public:
Sample(int a,int b)
{
x=a;y=b;
}
int getx(){return x;}
int gety(){return y;}
};

void main()
{
int (Sample::*fp)();
fp=&Sample::getx;
Sample s(2,7);
int v=(s.*fp)();
fp=&Sample::gety;
int t=(s.*fp)();
cout<<"v="<<v<<",t="<<t<<endl;
}

解:
本題說明了類成員函數指針的使用方法。在main()中定義的fp是一個指向Sample類成員函數的指針。執行fp=Sample::getx后。fp指向成員函數getx(),int v=(s.*fp)()語句等價于int v.getx(),v=x=2;執行fp=Sample::gety之后,fp指向成員函數gety(),int t=(s.*fp)()語句等價于int t=s.gety(),t=x=7。所以輸出為:
v=2,t=7

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

題14 .分析以下程序的執行結果
#include<iostream.h>
class Sample
{
int x;
int y;
public:
Sample(int a,int b)
{
x=a;y=b;
}
int getx(){return x;}
int gety(){return y;}
};

void main()
{
int (Sample::*fp)();
fp=&Sample::getx;
Sample s(2,7),*p=&s;
int v=(p->*fp)();
fp=&Sample::gety;
int t=(p->*fp)();
cout<<"v="<<v<<",t="<<t<<endl;
}

解:
本題說明了類成員函數指針的使用方法。這里通過指向對象的指針來調用指向類成員函數的指針,其原理與上題相似。輸出仍為:
v=2,t=7

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

題15.設計一個立方體類Box,它能計算并輸出立方體的體積和表面積。

解:
Box類包含三個私有數據成員a(立方體邊長)、volume(體積)和area(表面積),另有兩個構造函數以及seta()(設置立方體邊長)、getvolume()(計算體積)、getarea()(計算表面積)和disp()(輸出結果)。
本題程序如下:
#include<iostream.h>
class Box
{
float a;
float volume;
float area;
public:
Box(){}

Box(float r){a=r;}
void seta(float r){a=r;}
void getvolume(){volume=a*a*a;}
void getarea(){area=6*a*a;}
void disp()
{
cout<<"體積:"<<volume<<",表面積:"<<area<<endl;
}
};

void main()
{
Box obj1(4.5),obj2;
obj2.seta(6.4);
obj1.getvolume();
obj1.getarea();
cout<<"obj1=>";
obj1.disp();
obj2.getvolume();
obj2.getarea();
cout<<"obj2=>";
obj2.disp();
}

本程序的執行結果如下:
obj1=>體積:91.125, 表面積:121.5
obj2=>體積:262.144,表面積:245.76


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莱州市| 长宁区| 北海市| 唐海县| 丁青县| 鄯善县| 淄博市| 舒兰市| 贵定县| 长葛市| 清原| 黎平县| 工布江达县| 台前县| 曲周县| 清远市| 望奎县| 昌江| 易门县| 吉水县| 夏河县| 庆云县| 永嘉县| 桦甸市| 盘山县| 建瓯市| 恩施市| 新营市| 威宁| 克什克腾旗| 桃园县| 康保县| 安吉县| 克拉玛依市| 邳州市| 乌拉特后旗| 莒南县| 军事| 天台县| 郸城县| 日照市|