下面的实例中 , 同名函数 print() 被用于输出不同的数据类型:
实例
#include using namespace std; class printData{public:void print(int i) {cout << "整数为: " << i << endl;}void print(doublef) {cout << "浮点数为: " << f << endl;}void print(char c[]) {cout << "字符串为: " << c << endl;}}; int main(void){printData pd;// 输出整数pd.print(5);// 输出浮点数pd.print(500.263);// 输出字符串char c[] = "Hello C++";pd.print(c);return 0;}当上面的代码被编译和执行时 , 它会产生下列结果:
整数为: 5浮点数为: 500.263字符串为: Hello C++C++ 中的运算符重载您可以重定义或重载大部分 C++ 内置的运算符 。 这样 , 您就能使用自定义类型的运算符 。
重载的运算符是带有特殊名称的函数 , 函数名是由关键字 operator 和其后要重载的运算符符号构成的 。 与其他函数一样 , 重载运算符有一个返回类型和一个参数列表 。
Box operator+(const Box声明加法运算符用于把两个 Box 对象相加 , 返回最终的 Box 对象 。 大多数的重载运算符可被定义为普通的非成员函数或者被定义为类成员函数 。 如果我们定义上面的函数为类的非成员函数 , 那么我们需要为每次操作传递两个参数 , 如下所示:
Box operator+(const Box下面的实例使用成员函数演示了运算符重载的概念 。 在这里 , 对象作为参数进行传递 , 对象的属性使用 this 运算符进行访问 , 如下所示:
实例
#include using namespace std; class Box{public:double getVolume(void){return length * breadth * height;}void setLength( double len ){length = len;}void setBreadth( double bre ){breadth = bre;}void setHeight( double hei ){height = hei;}// 重载 + 运算符 , 用于把两个 Box 对象相加Box operator+(const Boxbox.length = this->length + b.length;box.breadth = this->breadth + b.breadth;box.height = this->height + b.height;return box;}private:double length;// 长度double breadth;// 宽度double height;// 高度};// 程序的主函数int main( ){Box Box1;// 声明 Box1 , 类型为 BoxBox Box2;// 声明 Box2 , 类型为 BoxBox Box3;// 声明 Box3 , 类型为 Boxdouble volume = 0.0;// 把体积存储在该变量中// Box1 详述Box1.setLength(6.0);Box1.setBreadth(7.0);Box1.setHeight(5.0);// Box2 详述Box2.setLength(12.0);Box2.setBreadth(13.0);Box2.setHeight(10.0);// Box1 的体积volume = Box1.getVolume();cout << "Volume of Box1 : " << volume <当上面的代码被编译和执行时 , 它会产生下列结果:
Volume of Box1 : 210Volume of Box2 : 1560Volume of Box3 : 5400五 、C++进阶 多态和数据抽象C++ 多态多态按字面的意思就是多种形态 。 当类之间存在层次结构 , 并且类之间是通过继承关联时 , 就会用到多态 。
C++ 多态意味着调用成员函数时 , 会根据调用函数的对象的类型来执行不同的函数 。
下面的实例中 , 基类 Shape 被派生为两个类 , 如下所示:
实例
#include using namespace std; class Shape {protected:int width, height;public:Shape( int a=0, int b=0){width = a;height = b;}int area(){cout
推荐阅读
-
-
世界|阿拉伯学者曾记载:世界上有七位强大的国王,其中四位都是蒙古人
-
穿搭日记|皮肤科医生访谈实录:这些护肤方式毁脸又费钱,许多人还在做
-
「鬼斗车」导火索竟然是那块中控屏,汽车行业终于“开战”了
-
-
高铁:全长18.226公里!华东地区最长高铁隧道今日贯通
-
感染新冠出现嗅觉味觉下降怎么办 感染新冠出现嗅觉味觉下降怎么办吃什么药
-
-
如果心有颜色|《亲爱的》原定佟年人选是她,遭婉拒后成就杨紫,网友:可惜了
-
应急管理部:北方可能出现入汛以来最大范围强降雨过程
-
-
亚特兰大|今日分析:AC米兰 VS 亚特兰大 AC米兰本赛季表现不俗 士气正盛
-
扬子晚报|“代驾”朋友车技不熟有点慌,他主动开车被查醉驾
-
现实中“闭关”的僧人,一个50多年未出山门,一个头发长到4米
-
仨三搞笑说▲换车坚持购入凯迪拉克XT5,车主说了真心话,年收入36万
-
新华社客户端|这样的“文艺范”不可取!四女子铁路上拍艺术照被罚
-
-
「养生乐活美少女」老是喜欢刨根问底的生肖,纠结恋人的过去
-
#特鲁多接受议会质询#特鲁多90分钟质询欲证清白:没腐败 只有夜以继日工作
-