对下标运算符[]和函数调用运算符()的重载-创新互联
一.对下标运算符[]的重载:
创新互联是一家专业提供盱眙企业网站建设,专注与成都网站制作、成都做网站、H5场景定制、小程序制作等业务。10年已为盱眙众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。重载的格式:返回类型 类名 operator [](参数);
#include
using namespace std;
class A
{
public:
A(int n);
~A();
int & operator [](int n);//返回类型为int & 引用类型
private:
int *p;
int size;
};
int & A::operator[](int n){
return p[n];//返回p[n]
}
A::A(int n)
{
p = new int[n];
}
A::~A()
{
delete[]p;
}
int main(){
A a(5);
a[3] = 4;//等价于a.operator[](3)=4,相当于4赋值给了p[3];
cout << "a[3]=" << a[3] << endl;
cin.get();
return 0;
}
二.对()运算符的重载
#include
using namespace std;
class A{
public:
float operator()(double a,double b);
};
float A::operator ()(double a,double b){
return a*b;
}
int main(){
A f;
float a=f(10.0,1.23);//默认double类型
cout< return 0; } 三.对流输出运算符‘<<’和流输出‘>>’的重载 #include using namespace std; class A { public: A(int n); ~A(); int& operator[](int);//这里用返回值类型为引用类型,完全是效率问题。 friend ostream& operator <<(ostream &otput, A& a);//对<<的重载最好用友员函数 friend istream& operator >>(istream &input, A& b); private: int *p; int size; }; int& A::operator[](int a){ if (a return p[a]; cout << "out of size" << endl; exit(0); } ostream& operator <<(ostream &otput, A& a){ for (int i = 0; i < a.size; i++) otput << a.p[i]<<' '; cout << endl; return otput; } istream& operator >>(istream &input, A& b){ for (int i = 0; i < b.size; i++){ input >> b.p[i]; } return input;//这里返回值为istream 类型变量是规定。 } A::A(int n) { p = new int[n]; size = n; } A::~A() { delete[]p; size = 0; } int main(){ A a(5); cout << "input the elements of A a" << endl; cin >> a; //cout << "a[5]" << a[5]< cout << "a[3]=" << a[3] << endl; cout << a< system("pause"); return 0; } 另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:对下标运算符[]和函数调用运算符()的重载-创新互联
本文网址:http://hbruida.cn/article/dogoss.html