c – 什么是“operator int&(){return i; “在代码中做

c – 什么是“operator int&(){return i; “在代码中做,第1张

概述我在Stack Overflow中发现这段代码只需几分钟. 我对实际 *** 作符int&(){return i;正在做代码. #include <iostream>#include <conio.h>using namespace std;class INT {public: INT(int ii = 0) : i(ii) {} operato 我在Stack Overflow中发现这段代码只需几分钟.
我对实际 *** 作符int&(){return i;正在做代码.

#include <iostream>#include <conio.h>using namespace std;class INT {public:            INT(int ii = 0) : i(ii) {}            operator int&() { return i; }            voID display()            {              cout << "value of i is : " << i;                   }private:  int i;};int main(){  INT l;  cin >> l;  l.display();  getch();  return 0;}@H_419_13@  

我添加了显示功能只是为了获得一些见解.我看到了从cin>>获得的价值升;被分配给i,它是对象l的私有成员.所以这是
我想是某种超载.

你能让我知道我们可以直接通过cin来获取课堂对象的价值吗?它运作正常吗?

如果我在类INT的私有部分中有两个int变量怎么办?

解决方法

What is operator int&() { return i; } doing in the code?

这是一个Conversion Operator;它接受一个I​​NT对象并返回对int类型的引用.

只要编译器可以匹配函数参数等,就总是允许一次隐式转换.
因此,只要有一个函数接受一个int但是INT实例被传递给它,编译器就会使用这个转换运算符将INT转换为int,这样就可以进行适当的转换并调用函数.

What is the use of such conversion. Are they helpful in practical code?

如第一个答案中所述,只要您的代码需要大量隐式转换,这就非常有用.
请注意,如果没有这样的功能,则必须提供返回适当类型的特殊成员函数,并且用户必须明确地调用它们;这是很多编码开销,这个功能可以避免这种情况.

Can you let me kNow can we take the value of the object of class from directly through cin? Does it work fine?    

为了使cin>> l起作用,
l应该是>>的数据类型运算符重载cin类型(istream)

请注意,>>大多数内置数据类型都被重载,因此您可以直接使用,
cin>> i,适用于i为int或float等的类型.

但是,在你的例子中,
l是INT类型和>>对于INT数据类型,运算符不会重载.当然,INT是您的自定义类,标准C库实现在实现>>的重载时无法知道它.因此不存在过载.
由于没有重载版本的>>可用,你不能直接使用>>并且编译器将返回无匹配函数的错误.

您将必须提供overload >> operator作为独立功能,接收INT,以便能够使用cin>> l.

std::istream& operator>>(std::istream& is,INT& obj) {}@H_419_13@                            	          总结       

以上是内存溢出为你收集整理的c – 什么是“operator int&(){return i; “在代码中做全部内容,希望文章能够帮你解决c – 什么是“operator int&(){return i; “在代码中做所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1220771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存