⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 operator解引用的用法.txt

📁 里面的代码是自己写的,参考书是thingking in c++,代码有详细的说明,对学习c++语法非常有帮助!
💻 TXT
字号:
/*本程序选自thinking in c++ P510
*本程序在于说明operator->的使用方法。
*书上说:1.the operator-> is generally used when you want to make an object appear 
*        to be a pointer. an object like this is often called a smart pointer.
*        2.operator-> must be member function
*        3.operator-> must return an object(或是它的引用) that also has operator ->
           or it must return pointer.
*/

#include <iostream>
#include <vector>
#include <cassert>
using namespace std;

class Obj {
	static int i,j;
public:
	void f() const { cout << i++ << endl;}
	void g() const { cout << j++ <<endl;}
};

//static member definitions
int Obj::i = 1;
int Obj::j = 2;

// container:

class ObjContainer {
	vector< Obj * > a;
public:
	void add( Obj * obj ) { a.push_back( obj );}
    friend class SmartPointer;                 //友元声明
};

class SmartPointer {
	ObjContainer & oc;
	int index;
public :
	SmartPointer ( ObjContainer & objc ) : oc( objc ) { index = 0;}

	//return value indicates end of list
	bool operator ++() {
		if ( index >= oc.a.size() ) return false;
		if ( oc.a[++index] ==0 )return false;
		return true;
	}

	bool operator ++(int){
		return operator ++();
	}

	Obj * operator ->() const {  //返回设计SmartPointer时想指向的对象的指针
		assert( oc.a[ index ] != 0 );
		return oc.a[ index ];
	}
};

int main()
{
	const int sz = 10;
    Obj o[sz];
	ObjContainer oc;
	for ( int i = 0; i < sz ; i++)
		oc.add( & o[i]);

	SmartPointer sp(oc);

	while ( sp++ )
	{
		sp->f();
		sp->g();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -