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

C++的一道难题 求解释 关于重载运算符的,该如何解决

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

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

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

分不多,技术交流吧

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

C/C++ code
#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;} 

热点排行