阿狸先森|一文让你学完C++,干货收藏( 八 )


下面的实例中 , 同名函数 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


推荐阅读