C++学习日记day04

第四课
1.成员指针
1)指向成员变量的指针
定义:成员变量类型 类名::*指针变量名;
赋值/初始化:指针变量名=&类名::成员变量名;
解引用:对象.*指针变量名、对象指针->*指针变量名;
2)指向成员函数的指针
定义:成员函数返回类型 (类名::*指针变量名) (形参表);
赋值/初始化:指针变量名=&类名::成员函数名;
解引用:(对象.*指针变量名)(实参表);、(对象指针->*指针变量名)(实参表)
2.输入输出运算符重载
int a = 10, b = 20;
cout << a << endl;
int c = a + b;
int d = a * b;
Student s (...);
cout << s << endl; // ?
s += 12;
L#R -> operator# (L, R);
    -> L.operator# (R);
3+4i
练习:定义一个分数类,包括分子和分母,支持输入输出。
3/5
3/5
3.友元函数
1) 友元不是成员,被声明为友元的函数可以访问类的任何成员。
2) 友元声明可以出现在类的公有、私有和保护部分,效果都是一样的4.双目运算符重载
L#R -> L.operator# (R)
int a = 10, b = 20;
(a+=b)+=b;
练习:为分数类添加+/-/+=/-=运算符。
5.单目运算符重载
#O // O.operator# ()
   // operator# (O)
注意:
1) 前缀自增减运算符
表达式的值是增减以后的值。
运算符函数返回操作数的引用。
成员函数形式的运算符函数没有参数,友元函数形式的运算符函数只有一个参数——操作数。
可以连用。
2) 后缀自增减运算符
表达式的值是增减以前的值。
运算符函数返回操作数增减以前的副本。
成员函数形式的运算符函数有一个int型哑元参数,友元函数形式的运算符函数有两个参数,第一个是操作数,第二个是int型哑元。
不能连用。
3) 类型转换运算符
在源类型中定义一个如下形式的运算符函数:
operator 目标类型 (void) {
    构造一个目标类型的对象,返回之;
}
如果在源类型中提供类型转换运算符函数的同时,在目标类型中定义类型转换构造函数,对于隐式类型转换,系统会优先选择类型转换运算符完成类型转换,而对于显式类型转换,系统则会优先选择构造函数完成同样的工作。
6.友元和成员
对于左右操作数类型不同的双目运算符函数,通常需要被定义为左操作数类型的成员,同时也是右操作数类型的友元。
练习:实现一个3X3整型矩阵,支持如下运算:
+、*、+=、*=、前后缀++、<<。
a b c     A D G     aA+bB+cC aD+bE+cF aG+bH+cI
d e f  X  B E H  =  dA+eB+fC dD+eE+fF dG+eH+fI
g h i     C F I     gA+hB+iC gD+hE+iF gG+hH+iI
6.不允许被用户重载的运算符
7.只能定义为成员函数的运算符
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值