
c++运算符重载分类总结
由于C++语言支持函数重载,才能将运算符当成函数来用,C 语言就不行。
我们要以平常心来对待运算符重载:(1)不要过分担心自己不会用,它的本质仍然是程序员们熟悉的函数。
(2)不要过分热心地使用,如果它不能使代码变得更加易读易写,那就别用,否则会自找麻烦。
不能被重载的运算符在C++运算符集合中,有一些运算符是不允许被重载的。
这种限制是出于安全方面的考虑,可防止错误和混乱。
(1)不能改变C++内部数据类型(如int,float 等)的运算符。
(2)不能重载 . , .* , :: ,?: (共四种),因为‘.’在类中对任何成员都有意义,已经成为标准用法。
(3)不能重载目前C++运算符集合中没有的符号,如#,@,$等。
原因有两点,一是难以理解,二是难以确定优先级。
(4)对已经存在的运算符进行重载时,不能改变优先级规则,否则将引起混乱。
运算符重载函数的两种形式:成员函数形式和友员函数的形式运算符被重载后,保持原来运算符4个特征不变1,优先级不变2,结合性不变3,操作数个数不变4,语法结构不变参考网上的,你先在百度上搜一下,有很多这方面的文章。
关于运算符重载的一个小问题
把int get(){return i;}改成int get()const{return i;}就行了要保证一个方法不会修改数据成员,具体做法就是声明时将方法本身用const关键字来标识非const对象既可以调用const方法也可以调用非const方法,但const对象就只能调用const方法。
可以参考下
关于=运算符重载
K被隐式转换为对象A了。
也就是k调用了A(int x)构造函数,隐式创建了对象,所以说可以成功。
但你要调换一下参数位置就不行了。
k+a1是不合法的。
还有你的操作符重载参数要用引用。
关于运算符重载
大哥你定义的是friend函数。
实现的时候就别加作用域了好不好。
又不是实现类得函数。
友元函数不输入类
关于运算符重载的问题。
急急急
这种是属于重载为类的成员函数,类为ElemType;



