您的位置:首页 > 编程语言 > C语言/C++

C++学习日记day04

2012-03-22 21:04 190 查看
第四课

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.只能定义为成员函数的运算符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: