8、友元和运算符重载
运算符重载 C++中的运算符本质上就是函数,函数可以重载,那么运算符也是可以重载的,C++允许将运算符重载扩充到用户定义的类型,例如可以使用+将两个对象加起来。 要重载运算符,要使用运算符函数。它的形式是: operatorop(argument-list) 如果一个类重载了+,a,b,c是三个对象。则我们可以使用: c=a+b;c=a.operator+(b); 上面这两种调用+,是等价的。 d=a+b+c; 上面代码也是可行的,因为+是从左到右结合的上面式子等价于 d=a.operator+(b+c);进一步的d=a.operator+(b.operator+(c)); 例子:重载+、-、*的类 我们设计一个类,用来表示时间的数据类型,时间的加法减法乘法可以通过重载运算符的方式。 //使用类1.h#ifndef TIME#define TIMEclass Time{ private: int hour; int min; public: Time(); Time(int h,int...
9、类的类型转换
1. 将标准类型转换成类类型 有C语言基础的都知道,标准类型的是可以进行类型转换的,例如,数值类型中int和double可以互相进行隐式类型转换。int类型和int *类型就无法进行隐式转换(或称自动类型转换),int *p=10;是错误的,但是我们可以使用显式类型转换(或称强制类型转换),int *p=(int *)10;是正确的。 实际上,C++允许我们给自定义类型(类)和标准类型进行互相转换。 看看下面这个例子: #include<iostream>#include<string>class apple{ int number; std::string color; public: apple(int n=0,std::string c="no color") { number=n; color=c; } void display()const { ...