C++重载操作符的参数个数定义?
C++中重载操作符 时,发现操作符的参数是有规定的。像<<做为友元函数重载时只能传入两个。虽然想想好像这并没有什么问题?但是想知道谁规定了这个参数个数呢?是编译器吗?细节是怎么做到的呢?
我今天想结合友元成员函数与重载运算符做个试验:
编译结果:二进制“operator <<”的参数太多,所以想请教下这些操作符的参数个数怎么确定下来的,或者有没有什么办法可以让我实现使用友元的办法,让X类显示Y类的数据?
我今天想结合友元成员函数与重载运算符做个试验:
class X;
class Y{
friend std:: ostream & operator <<(Y &y,std::ostream &os) ;
public:
Y(int x){y=x;};
int get(){return y;}
private:
int y;
};
class X{
private:
int x;
public:
X(int m){x=m;};
X(X &y){x=y.get();};
~X(){};
int get(){return x;};
void set(int y){x=y;};
std:: ostream & operator <<(Y &y,std::ostream &os){os<<y.y;return os;};//想通过X类来访问显示Y类的数据
};
int main()
{
X x(1);
Y y=Y(1);
x<<(y,std::cout); //这里没有用友元函数来重载<<操作符,所以相当于调用 x.operator<<(y,std::cout)
return 0;
}
编译结果:二进制“operator <<”的参数太多,所以想请教下这些操作符的参数个数怎么确定下来的,或者有没有什么办法可以让我实现使用友元的办法,让X类显示Y类的数据?
...全文
相关推荐
C++常用运算符重载简介
C++常用运算符重载简介C++运算符重载是指将操作符赋予新的意义,以便在用户定义的类中使用。运算符重载的目的在于将操作符添加到自已的类中,以方便类对象之间的运算,例如使用+、-、*、/等运算符。
C++运算符重载PPT学习课件.ppt
**作为友元函数重载**: 当运算符重载为友元函数时,参数个数与原运算符的操作数个数相同,且至少应有一个参数为自定义类型。
C++运算符重载题库及答案.docx
这些运算符在C++中具有特殊的地位,它们的功能和语法结构是固定不变的,因此无法通过重载来改变。运算符重载的基本规则:1. **操作数个数**:重载运算符不能改变操作数的数量。
c重载与模板PPT课件.pptx
运算符重载有两种方式:作为类的成员函数和作为友元函数。成员函数重载时,参数个数比原始运算符少一个(除了后置增量和减量运算符)。友元函数重载时,参数个数与原始运算符相同,并且至少有一个自定义类型的参数。
c++面试题 c++面试题
#### 题目六:运算符重载**问题**:C++中的运算符重载有哪些规则和技巧?**解析**:- **运算符重载**:允许用户自定义如何使用内置运算符来处理自定义类型的数据。


