obj是什么意思(对方发我obj啥意思)

在C ++中,我们可以让操作符为用户定义的类工作。这意味着C ++可以为运算符提供数据类型的特殊含义,这就是所谓的运算符重载。例如,我们可以在诸如String

在C ++中,我们可以让操作符为用户定义的类工作。这意味着C ++可以为运算符提供数据类型的特殊含义,这就是所谓的运算符重载。

obj是什么意思(对方发我obj啥意思)

例如,我们可以在诸如String & # 39+'这样就可以只用+连接两个字符串。

算术运算符可能重载的其他示例类有复数、小数、大整数等。

一个简单而完整的例子

# include & ltiostream & gt使用命名空间stdclass Complex {private:int real,imagpublic:Complex(int r = 0,int I = 0){ real = r;imag = I;}//这是在& # 39;+'在两个复杂对象之间与//一起使用Complex operator +(复杂常量& obj){ Complex RES;RES . real = real+obj . real;RES . imag = imag+obj . imag;返回res} void print(){ cout & lt;& ltreal & lt& lt"+I & # 34;& lt& ltimag & lt& ltendl}};int main(){Complex c1(10,5),c2(2,4);复数C3 = C1+C2;//调用& # 34;运算符+& # 34;C3 . print();}输出:

12 + i9

运算符功能和普通功能有什么区别?

运算符的功能与普通函数相同。唯一不同的是,运算符的名称始终是运算符关键字后跟运算符的符号,使用相应的运算符时会调用运算符函数。

以下是全局运算符函数的一个示例:

# include & ltiostream & gt使用命名空间stdclass Complex {private:int real,imagpublic:Complex(int r = 0,int I = 0){ real = r;imag = I;} void print(){ cout & lt;& ltreal & lt& lt"+I & # 34;& lt& ltimag & lt& ltendl}//将全局运算符函数设为该类的友元,以便//它可以访问私有membersfriend复杂运算符+(复杂常数&,复杂常数&);};复数运算符+(复数const &c1,复数const & C2){ return Complex(C1 . real+C2 . real,C1 . imag+C2 . imag);} int main(){复杂c1(10,5),c2(2,4);复数C3 = C1+C2;//调用& # 34;运算符+& # 34;C3 . print();返回0;}可以让所有运营商过载吗?除了少数运算符,几乎所有运算符都可以重载。以下是不能重载的运算符列表。

。(点运算符)::?:尺寸

关于运算符重载的要点

1)要使运算符重载起作用,至少一个操作数必须是用户定义的类对象。

2)赋值操作符:编译器会自动为每个类创建一个默认的赋值操作符。的默认赋值运算符将右边的所有成员都赋给左边的成员,并且在大多数情况下正常工作(此行为与复制构造函数相同)。

3)转换运算符:我们也可以编写转换运算符,用于将一种类型转换为另一种类型。

# include & ltiostream & gt使用命名空间std类分数{int num,denpublic:Fraction(int n,int d){ num = n;den = d;}//转换运算符:fraction operator float()const { return float(num)/float(den)的返回浮点值;}};int main() {Fraction f(2,5);float val = f;cout & lt& ltval返回0;}输出:

0.4

重载的转换运算符必须是成员方法。其他运算符可以是成员方法或全局方法。

4)任何可以用单个参数调用的构造函数都可以用作转换构造函数,这意味着它也可以用于隐式转换到正在构造的类。

# include & ltiostream & gt使用命名空间std类点{private:int x,y;public:Point(int i = 0,int j = 0){ x = I;y = j;} void print(){ cout & lt;& ltendl & lt& lt"x = & # 34& lt& ltx & lt& lt",y = & # 34& lt& lty;}};int main() {Point t(20,20);t . print();t = 30//t的成员x变成30t . print();返回0;}输出:

x = 20,y = 20 x = 30,y = 0

我们很快就会讨论一些重要运算符的重载问题,敬请关注~

今天到此为止。分享日常知识,希望对你有帮助~

另外,如果想提高编程能力,学好C语言C++编程!弯道超车,领先别人一步!笔者这里或许能帮到你~

学习分享编程书籍:

obj是什么意思(对方发我obj啥意思)

学习视频分享:

obj是什么意思(对方发我obj啥意思)

分享(源代码,项目实际视频,项目笔记,基础入门教程)

欢迎转行学编程的伙伴,学会用更多的材料比自己思考成长更快!

点击下方【了解更多】获取更多学习资料,帮助你学习成长~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/198845.html

发表回复

登录后才能评论