C/C++ 学习手札(二)

2012/6/13 11:08:00  请友读忠(更多)  E界MRP开发下载网  1976阅

我们研究一下继承和虚函数。 比如我们需要求正方形、长方形的周长、面积: 选择1计算长方形 选择2计算正方形 选择3退出 其他无效 我们做一个继承实现,父类矩形,子类有正方形、长方形继承矩形 C++的继承语法如下: 矩形 class Rectangle 正方形 class Square: public Rectangle 长方形 class Oblong: public Rectangle 对正方形、长方形求面积、周长。面积公式相同,在矩形父类完成,函数area();周长公式不同,在各个子类种实现。这里有一个虚函数side()。
/**
* 求边长
*
/virtual int side()=0; 让函数side()=0;是在此定义,由子类实现。类似于Java的抽象父类,指定需要子类实现的方法。 矩形类:
/**
* 矩形
*
/class Rectangle {
protected:
int a; // a边
int b; // b边
public:
/**
* 求面积
*
/ int area() {
return a * b;
}
/**
* 求边长
*
/ virtual int side()=0;
};
设置了a、b两边且为protected供子类直接使用,给出了求面积的函数实现area(),同时定义了求边长的函数side(),要求函数side()由子类实现。 正方形类:
/**
* 正方形
*
/class Square: public Rectangle {
public:
/**
* 设置边
*
/ void setA(int a) {
this->a = a;
this->b = a;
}
/**
* 求边长
*
/ virtual int side() {
return 4 * a;
}
};
实现了求边长函数side(),同时加入设置边函数setA(int a)。 长方形类:
/**
* 长方形
*
/class Oblong: public Rectangle {
public:
/**
* 设置a边
*
/ void setA(int a) {
this->a = a;
}
/**
* 设置b边
*
/ void setB(int b) {
this->b = b;
}
/**
* 求边长
*
/ virtual int side() {
return 2 * a * b;
}
};
分享至:
good 19

发表评论

文明评论,重在参与

17楼 EJ136288:
在那爬满忧伤的祝福里,在那微笑着伤感的夏天,一句珍重,一句感恩,一句共勉,都写满了欢笑,而泪水和苦涩的青春在此交融,萦绕的是心怀的难舍难分。06-17 22:51
16楼 游客52315:
不明白12-09 21:33
15楼 EJ159826:
看不懂09-12 12:21
14楼 EJ_乱氏勿扰:
我也看的不太清楚,,,,08-08 19:18
13楼 EJ187868:
神馬意思啊!07-21 11:06
更多评论(17)
返回上级
首页合作客服留言QQ群简版
E界,引领视界
mrpej.com @CopyRight