#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
class INT {
public:
int d;
INT() {}
INT(int a) { d=a; }
INT(const INT& a) { d=a.d; }
operator int() const { return d; }
};
void main() {
int i;
vector<INT> v;
cout<<"The original vector...";
for(i=0;i<10;i++) {
v.push_back(rand());
cout<<v[i]<<" ";
}
sort(v.begin(),v.end() );
cout<<"After sorting ...";
for(i=0;i<10;i++)
cout<<v[i]<<" ";
cout<<endl;
}
求教的是在程序中 operator int() const { return d; }这句重载的符号到底起什么用?
请教各位达人了。
在强制类型转换的时候起作用。
例如:
INT aLnt(10);
int n=(int)aLnt;//那么这时候n就被赋值为10了。
如果没有那么一段则不能通过编译,会出错的。
这是类型转换运算符,给个例子:
struct A
{
int a;
A(int i):a(i){}
operator int() const { return a; }
};
void main()
{
A aa(1);
int i = int(aa);
int j = aa; //作用一样
}
官方解释:
declaration like:
operator type() const{...}
or
operator type() {...}
is a customer defined operator, it is used by compiler to perform implicit conversion when needed. (or you can implictly envoke such operator by (type)classObj or type(classObj) or classObjPtr-> operator type() ...
the const keyword tell compiler that this operator will not modify the internal state of the object, so with const keywork, this operator can be used on constant object of this class, otherwise, it can only be used on non-constant objects of this class
使 "<<" 能够识别出v[i],并且输出v[i]的数值。 因为i是INT类型的,需要一个接受到"<<"就会输出值的操作。operator就是让v[i]的数值显示出来。
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息