C++ 类的使用

来源:互联网 发布:剑灵龙男捏脸数据大全 编辑:程序博客网 时间:2024/06/14 14:25

1.友元函数

一般来说,访问私有类成员的唯一方法是使用类方法。C++ 使用友元函数来避幵这种限制。要让函数成为友元,需要在类声明中声明该函数,并在声明前加上关键字friend。

2.运算符重载

C++ 扩展了对运算符的重载,允许自 定义特殊的运算符函数,这种函数描述了特定的运算符与类之间的关系。
运算符函数可以是类成员函数,也可以是友元函数( 有一件运算符函数只能是类成员函数)。要调用 运算符函数,可以直接调用该函数,也可以以通常的句法使用被重载的运算符。对于运算符operator , 其运算符函数的格式如下:

operatorop(argument-list)

argumcnt-list表示该运算符的操作数。如果运算符函数是类成员函数,则第一个操作数是调用对象,它不在 argument-list中。例如,本章通过为Vector类 定 义 operator+()成员函数重载了加法。如果 up、right
和 result都是 Vector对象,则可以使用下面的任何一条语句來调用矢量加法:

result = up.operator + (right ) ;result = up + right; .

在第二条语句中,由于操作数u p 和 right的类都是Vector,因此 C++将 使用 Vector的加法定义。
当运算符函数是成员函数时,则第一个操作数将是调该函数的对象。例如,在前面的语句中,up 对象是调用函数的对象。定义运算符函数时,如果要使其第一个操作数不是类对象,则必须使用友元函数。
这样就可以将操作数按所需的顺序传递给函数了。

最常见的运算符重载任务之一是定义<<运算符,使 之 可 与 cout — 起使用,来显示对象的内容。要让ostream对象成为第一个操作数,需要将运算符函数定义为友元:要使重新定义的运算符能与其自身拼接,需要将返回类型声明为ostream& 。下面的通用格式能够满足这种要求

ostream & operator<<(ostream &os, const c_name &obj){    os<<...;//display object contents    return os;}

3.类型转换

C++ 允许类与基本类型之间的转换。首先,任何接收唯一一个参数的构造函数都可被用作转换函数,将类型与改参数相同的的值转换为类。如果将该类型与该参数相同的值赋值给对象,则C++将自动调用该构造函数。
假设有一个String 类,它包含一个将char *作为唯一参数的构造函数,那么bean是该类对象,则可以使用下面的语句

bean = "pinto";//convert type char * to type string

如果,声明前加explicit关键字,则显式转换

bean = String ("pinto"); //convert explicitly

3.1 转换函数

operator typename()

NOTE:转换函数没有返回值,参数
栗子:

Vector::operator double(){    return a_double_value;}

经验表明,不要依赖于隐式转换!!!


[1]. c++ primer ,6th

0 0
原创粉丝点击