c++ primer学习之----重载
来源:互联网 发布:淘宝怎么卖游戏装备 编辑:程序博客网 时间:2024/05/12 04:16
赋值(=)、下标([])、调用(())和成员访问箭头(->)等操作符必须定义为成员,将这些操作符定义为非成员函数将在编译时标记为错误。
6。操作符->
可以为类类型的对象重载成员访问操作符箭头(->),它必须被定义为一个类的成员函数。
假设我们想定义一个类类型来代表一个指向Screen类对象的指针,定义如下:
class ScreenPtr {
//...
private:
Screen *ptr;
};
我们希望定义ScreenPtr类,来保证这种类的对象总是指向Screen对象。它不能不指向对象。为了获得这种行为,我们定义一个带有构造函数的ScreenPtr类,但是它没有缺省构造函数
class ScreenPtr {
public:
ScreenPtr( Screen &s): ptr(&s){};
//...
}
ScreenPtr类型的对象的定义必须提供初始值:一个Screen类型的对象,ScreenPtr对象将指向它,否则定义就出错。
为使ScreenPtr类的行为像内置指针,我们必须在定义一些重载操作符,定义:解引用操作符(*)和成员操作符箭头(->):
class ScreenPtr {
public:
Screen& operator*() {return *ptr;}
Screen* operator->() { return ptr;}
//...
};
例程:
class Screen{
public:
Screen(short height = 0,short width = 0);
inline void home() { _cursor = 0; }
inline Screen& end();
inline Screen& forward();
inline Screen& back();
inline Screen& up();
inline Screen& down();
char lcFun(int){return 'a';};
private:
string _screen;
string::size_type _cursor;
short _height;
short _width;
inline int row();
};
class ScreenPtr{
public:
ScreenPtr(Screen &s){ptr = &s;}
Screen *operator->(){return ptr;}
Screen &operator*(){return *ptr;}
private:
Screen *ptr;
};
int main(int argc, char *argv[])
{
Screen screen(1,2);
ScreenPtr ptr(&screen);
cout<<ptr->lcFun(2)<<endl;
cout<<(*ptr).lcFun(2)<<endl;
return 0;
}
- c++primer之函数重载
- c++ primer学习之----重载
- C++primer学习:重载运算(1)
- C++primer学习:重载运算(2)
- C++primer学习:重载运算符(3)
- C++primer学习:重载运算符(4)
- C++primer学习笔记-----6.4函数重载
- 《C++primer(第五版)》学习之路-第十四章:重载运算与类型转换
- 《C++primer》操作符重载之CheckoutRecord相关
- C++ Primer Plus学习笔记之运算符重载
- 重载函数 (C++Primer-9)
- C++Primer学习笔记之二
- C++Primer学习笔记之三
- c++学习书籍之《C++primer》评价
- C++primer学习笔记之函数
- 《C Primer Plus》学习笔记之 函数
- C++Primer学习之四初始化
- 《C Primer Plus》学习笔记之 C内存管理
- 博客收藏
- C# Post数据流到HTTP地址
- 一组自定义对象的文件存取方法
- Ganglia 和 Nagios,第 1 部分: 用 Ganglia 监视企业集群
- Loaded Configuration File (none)
- c++ primer学习之----重载
- 4种读取xml文件方法
- EnableViewState=false无效
- Ext.Template的使用
- Centos 5.3 Nginx+php+mysql配置 独立的 Subversion (SVN)服务器
- Office 2010 word无法创建工作文件 请检查临时环境变量
- 工厂模式
- 解决Exchange 2007 匿名中继问题
- JavaScript和jQuery的DOM操作