永发信息网

求教一个c++ operator ()的问题

答案:5  悬赏:10  手机版
解决时间 2021-05-02 10:35
  • 提问者网友:玫瑰园
  • 2021-05-01 15:13

#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; }这句重载的符号到底起什么用?

请教各位达人了。


最佳答案
  • 五星知识达人网友:想偏头吻你
  • 2021-05-01 16:40

在强制类型转换的时候起作用。


例如:


INT aLnt(10);


int n=(int)aLnt;//那么这时候n就被赋值为10了。


如果没有那么一段则不能通过编译,会出错的。

全部回答
  • 1楼网友:青尢
  • 2021-05-01 20:03
应该是要给定义的变量初始化成d,比如上面的int i; 就是给i的值初始化成d
  • 2楼网友:一袍清酒付
  • 2021-05-01 19:07

int d = mm;

类型转换

  • 3楼网友:封刀令
  • 2021-05-01 18:06

这是类型转换运算符,给个例子: 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

  • 4楼网友:琴狂剑也妄
  • 2021-05-01 17:57
使 "<<" 能够识别出v[i],并且输出v[i]的数值。 因为i是INT类型的,需要一个接受到"<<"就会输出值的操作。operator就是让v[i]的数值显示出来。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯