类中友元函数 、重载操作符 和 数组

来源:互联网 发布:淘宝美即面膜牛奶白滑 编辑:程序博客网 时间:2024/05/16 00:26
1.
bool equal (DayOfYear date1,DayOfYear date2){   return (date1.month==date2.month&&date1.day==date2.day);}
上述定义只有一个问题:它是非法的!之所以非法,是因为成员变量month和day是DayOfYear的私有成员。私有成员变量(和私有成员函数)通常不能在一个函数的主体中引用,除非函数是一个成员函数。
一个类的友元函数不是这个类的成员函数,而是一个“友好”的函数,它能像一个成员函数那样访问那个类的私有成员。友元函数能直接读取一个成员变量的值,甚至能直接更改成员变量的值。
在类的定义中列出一个函数的声明时,要使。该函数成为类的友元,只需要在函数声明之前添加一个关键字friend。友元并不是成员函数,它本质上仍是一个 普通函数,只是被特别授予了访问类的数据成员的权限。
 
2.一下简单的规则可以帮助你选择成员函数和非成员函数
1、如果函数要执行的任务值涉及一个对象,就使用成员函数。
2、如果要执行的任务涉及多个对象,就使用非成员函数。
 
3.const参数修饰符
const应用于调用对象:
在成员函数的情况下,关键字const要放到函数声明的后面,刚好在末尾的分号之前,如下所示:
classs Money{public:    ......    void output (ostream &outs)const;
const在函数声明和函数定义中都要使用所以output函数定义像下面这样开头:
void Money::output (ostream & const){    ......}

 

4.重载操作符

规则:

1、重载一个操作符时,至少一个实参必须是类类型。

2、重载的操作符可以是类的友元;操作符函数可以是类的一个成员,也可以是一个普通函数。

3、不能新建一个操作符。只能对现有操作符进行重载,比如+、- 、* 、/ 、%等。

4、不能改变一个操作符的优先级。

5、以下操作符不能重载:圆点操作符、作用域解析操作符::以及操作符.*和?:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

	
				
		
原创粉丝点击