标签:其他 函数 size point 交换 ons 格式 知识 body
成员选择运算符---- .
成员指针运算符--- .*
作用域分辨符----- ::
三目选择运算符--- ?:
计算数据所占内存空间的大小:sizeof
重载之后的运算符不能改变运算符的优先级和结合性;
重载之后的运算符不能改变运算符操作数的个数及语法结构;
重载的运算符操作数至少有一个是自定义类型的;
重载运算符函数通常不能有默认的参数。
返回类型 operator op(参数表)
{
//运算符函数功能的实现代码
}
eg:
(1)complex operate+(complex c) //运算符在complex类上的运算符函数的声明
(2)Time operator- (Time t); // -运算符在Time类上的运算符函数的声明
(3)如Person对流提取运算符函数的声明:friend istream & opeerator >> (istream &din,Person) // >>运算符函数声明
(4)bool operator > (Date t);
// > 运算符函数在Date类上的声明。`
(1)以类的成员函数的方式实现
(2)以友元函数的方式实现-----为全局函数,不属于类,需要在类中声明为类的友元函数。
注:
oprd1 B oprd2
------本质是oprd1.operator B(oprd2)
(1)定义时是按成员函数定义,
(2)操作数1 是对象自己,
(3)运算符函数名称是operator B
,操作2是运算符函数的参数
(4)对运算符函数的使用本质上是操作数1对运算符函数的调用。
U oprd
-------本质上是oprd.operator U()
(1)写法是运算符 + 操作数,
(2)定义时是按成员函数定义
(3)对象本身就是操作数
(4)运算符函数 operatorU 是类的成员函数,由于单目运算法只有一个参数,所以运算符函数不带参数
oprd ++
------ 本质是 oprd.operator ++(0)
(1)操作数+运算符,为了与前置单目运算区分开,所以在运算符函数中加了整型参数。
(2)唯一的操作数oprd 即为对象本身,
(3)运算符的使用本质是,操作数对其成员函数的调用
返回类型 类名::operator 运算符(参数表)
{
//运算符函数的定义体
}
friend 返回类型 operator 运算符(形参列表);
//该运算符函数在类外实现,其形式如下:
返回类型 operator 运算符 (形参表)
{
//运算符函数的定义体
}
注:
友元调用与成员调用的区别:
习惯性形式 | 友元调用形式 | 成员调用形式 |
---|---|---|
a+b | operator+(a,b) | a.operator+(b) |
-a | operator-(a) | a.operator-() |
a++ | operator++(a,0) | a.operator+(0) |
eg: //定义流插入运算符函数operator <<,实现自定义类型的屏幕输出。
ostream& operator <<(ostream &out ,complex c) //函数返回值类型是输入流基类 ostream 对象的引用函数,第一个参数是 ostream 的引用,第二个参数是附属类 complex 对象。
{
if (c.real != 0)
cout << c.real;
if (c.imag > 0)
cout << ‘+‘ << c.imag<< ‘i‘ ;
else
cout << c.imag << ‘i‘ ;
return out;
}
//由于实部real 和虚部 imag 是复数complex 对象的私有数据,外部不可访问,若需访问需声明为complex类的友元函数;
//主函数调用: operator<<(cout,c1)
int s=3600; Time t=s;
Time t(1,0,0); int s=(int) t;
Point p(1,2) ;
complex c;
c = p; // 这行代码的执行就要求把Point对象 p 首先转换成 complex 对象,再赋给 complex 对象 c。
Time t=s
;int s=(int) t
;Time t=s;
int s=(int) t;
自动调用:
(1)如果声明类对象的初始化表同转换构造函数的参数表相匹配,该函数就会被调用
(2)当在需要该类的地方使用了别的数据类型,编译器就会自动调用转换构造函数进行转换。
注:转换构造函数要点,类名和类同名,含有一个不同于自身类型的参数,由于是构造函数也不需要返回类型,函数体不需要写 return 语句。
类型转换函数的格式:
operator 类型名()const
{
......
return (结果类型表达式)
}
注:
operator double() const;
标签:其他 函数 size point 交换 ons 格式 知识 body
原文地址:https://www.cnblogs.com/BY1314/p/12991524.html