day07c++

十九 成员指针(了解)

1成员变量指针

1)定义
  • 类型 类名::*指针变量名 = &类名::成员变量;
2)使用方法
  • 对像.*成员指针变量名;
  • 对象指针->*成员指针变量名;
“.*”:成员指针接引用运算符
“->”:间接成员指针解引用运算符

注意:成员变量指针本质是类中特定成员在对像中的相对位置!


2、成员函数指针

1)定义
  • 返回类型 (类名::*成员函数指针)(形参表) = &类名::成员函数名;
2)使用方法
  • (对象.*成员函数指针)(实参表);
  • (对象指针->*成员函数指针)(实参表)


二十 操作符重载

1、双目操作符的重载 L#R

1.1 运算类双目操作符
eg:实现两个复数相加:(1 + 2i) + (3 + 4i) = 4 + 6i
  • => 表达是的结果为右值
  • => 左右操作数既可以为左值也可以为右值
  • => 实现方式:
    • 1) 成员函数形式
      L#R的表达式可以被编译器翻译成L.operator#(R)的成员函数调用的形式,该函数的返回结果就是表达式的值。
    • 2)全局函数形式
      L#R的表达式也可以被编译器翻译成::operator#(L#R)的全局函数调用形式,该函数的返回结果就是表达式的值。

注意:通过friend关键字,可以把一个全局函数声明为某个类的友元函数,在友元函数中可以访问类中的任何成员。


1.2 赋值类双目操作符
  • =>左操作数必须是左值
  • =>右操作符可以是左值也可以是右值
  • =>表达式的值是一个左值,而且就是左操作数的自身
  • =>实现方式:
    • 1)成员函数形式
      L#R==》 L.operator#(R)
    • 2)全局函数形式
      L#R==》 ::operator#(L,R)

2、单目操作符的重载 #O

2.1 计算类的单目操作符: -(取负) !~
  • =>操作数既可以是左值也可以是右值
  • =>表达式返回结果是右值
  • =>实现方式:
    • 1)成员函数形式
      L#R==》 O.operator#()
    • 2)全局函数形式
      L#R==》 ::operator#(O)
2.2 自增减运算符:
  • => 前缀自增减
    操作数是左值,返回值也是左值(就是操作数自身)
  • 实现方法:

    • 1)成员函数形式:#O-》O.operator#();
    • 2)全局函数形式:#O-》operator#(O);
  • => 后缀自增减
    操作数是左值,返回值是右值(返回自增加前的数值)

  • 实现方法:
    • 1)成员函数形式:#O-》O.operator#(int/哑元参数/);
    • 2)全局函数形式:#O-》operator#(O,int/哑元参数/);

3 插入和提取操作符 << >>

功能:实现自定义类型的输出和输入的操作
注意:只能用全局函数形式(friend)实现

#include <iostream>
ostream cout;
istream cin;
friend ostream& operator<<(ostream& os,const RIGHT& right);

friend istream& operator>>(ostream& os,const RIGHT& right);

eg:
//cout.operator<<(a);
//operator<<(cout,a);
cout << a << endl;
cout << a << b << endl;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值