首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++的一路难题 求解释 关于重载运算符的

2012-12-30 
C++的一道难题 求解释 关于重载运算符的、()、[]、-、*这几个运算符 为什么只能重载为非静态成员函数,为什么

C++的一道难题 求解释 关于重载运算符的
=、()、[]、->、*

这几个运算符 为什么只能重载为非静态成员函数,为什么不能重载为全局函数或者友元函数?
如果推而广之,只能重载为非静态成员函数的运算符,本身有什么“规律”?
——我所知道的规律之一是,运算符左侧必须是对象。
但这并非铁律
我感觉+=也符合上面的规律:左侧必须是对象

分不多,技术交流吧
[解决办法]
C++标准在本论坛就有下载。自己下了看吧。
有很多东西,就是一个“规定”而已,如果当初规定为另外一种形式,也是完全可以的。
[解决办法]


#include <iostream>
#include <string.h>
using namespace std;

class String
{
public:
String():thesize(0),pc(NULL){}
String(char *p)
{
thesize = strlen(p);
pc = new char[thesize+1];
strcpy(pc,p);
pc[thesize] = '\0';
}
char operator [](int i)
{
return pc[i];
}
~String()
{
if(NULL != pc)
delete [] pc;
}
private:
int thesize;
char *pc;
};

int main()
{
char *p = "hello!!!";
String ms(p);
cout << ms[5] << endl;
return 0;
}

vector string ==凡是类内部含有指针,并且分配连续的内存空间的情况下都可以重载[]为成员函数

热点排行