c++ 运算符重载operator

不可重载的五个运算符

. :: * ?: sizeof
1 . (点运算符)通常用于去对象的成员,但是->(箭头运算符),是可以重载的

2 :: (域运算符)即类名+域运算符,取成员,不可以重载

3 .* (点星运算符,)不可以重载,成员指针运算符".*,即成员是指针类型

4 ?: (条件运算符)不可以重载

5 sizeof 不可以重载

运算符重载

本质就是重载方法,因为运算符不能直接识别复杂类型,当运算符操作复杂类型时会调用operator运算符方法
PS:运算符可以直接操作基本类型,但不能直接操作复杂类型
PS:重载运算符时,不能改变其结果性质,否则失去意义
PS:先写出调用函数/方法,通过调用函数的方法来推导出原型

重载><

成员方法:
		class 类
		{
			bool operator>(Time& t)
		};
全局方法:
		 bool operator==(Time& t1,Time& t2);

重载++ –

前自加/减:先自加,再取值
		++t1
		class Time
		{
		 	Time& operator++()
		 };
		或者:全局函数
		Time operator--(Time& t)

	后自加/减:先取值,再自加
		t1++;
		class Time
		{	
			Time operator++(int)
		};
		或者:全局函数
		Time operator--(Time& t,int)

重载<< >>
成员方法:
不能通过类成员方法来重载

cout<<t1;   cout.operator<<(Time);

全局方法:

void opeartor<<(ostream&,类名&);

cout
cout的类名: ostream
cin的类名: istream
写在类外,与类友元,类前声明

class A;
ostream& operator<<(ostream&,A&);
class A
{
public:
 	friend ostream& operator<<(ostream&,A&);
private:
 	int i;
}
ostream& operator<<(ostream& out,A& a)
{
	out<<a.i<<endl;
	return out;
}

友元

1、友元函数:若外部函数引用不到某类中成员时(保护和私有),可以将该函数声明为该类的“朋友”。
class 类	
{
	friend 函数原型;
};
2、友元类:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值