我对实际 *** 作符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;它接受一个INT对象并返回对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; “在代码中做所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)