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
- 【C++】类的使用
- Objective-C类的使用
- C++Builder中使用Excel的类
- C++Builder中TIniFile类的使用
- delphi 开发使用的基类C
- objective-c 中对于类的使用
- objective-c字符串类NSString的使用
- [C#]上机实验:类的使用
- C#-StringBuilder类的使用---ShinePans
- C#-sealed 封装类的使用
- C# SQLDMO类的使用
- C++_类模板的使用
- Objective-c 创建类的使用
- C++List模板类的使用
- C++STL之string类的使用
- C#abstract抽象类的使用
- C++代理类的使用
- Pro*C的使用
- java 对象 和 json 之间互转 例子
- POJ 1221 UNIMODAL PALINDROMIC DECOMPOSITIONS
- MySQL出现Errcode:28错误提示解决办法
- Linux存储IO栈(1)-- 内核对象与对象集
- 链表的使用
- C++ 类的使用
- Linux中ib开头的一些命令,先收藏一下.
- C++关键字解析与实例
- CGContextRef画图小结
- C++ 学习笔记(四):面向对象编程:多态,虚函数,数据抽象,数据封装,抽象类
- PullToRefresh框架 item以 表格/fragLayout的形式 (Fragment 嵌套PullToRefresh)
- mfc updatedata 用法
- 带有修订的word文档如何在打印的时候不显示修订内容?
- XML和实体类之间相互转换(序列化和反序列化)