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.只能定义为成员函数的运算符
阅读更多
文章标签: c++ 工作 c
个人分类: c/c++
上一篇C++学习日记day03
下一篇C++学习日记day05
想对作者说点什么? 我来说一句

Oracle学习笔记——day04

2009年09月02日 35KB 下载

黑马74期安全卫士day04项目源码

2017年01月23日 43.57MB 下载

没有更多推荐了,返回首页

关闭
关闭