关闭

C++学习日记day04

标签: c++工作c
183人阅读 评论(0) 收藏 举报
分类:
第四课
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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17934次
    • 积分:377
    • 等级:
    • 排名:千里之外
    • 原创:18篇
    • 转载:5篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论