0

これは、日付を含む文字列を持つオブジェクトと、日付、月、年の 3 つの整数を持つオブジェクトを変換するプログラムです。

class date
{
private:
char dt[9];

public: 
//constructors and functions....
};

class dmy
{
private: 
int day,mth,yr;

public:
//constructors..

  operator date()   // This is what my question is about
  {
   char temp[3],str[9]
   itoa(day,str,10)
   strcat(str,"/");
  itoa(mth,temp,10);
  strcat(str,temp)
  strcat(str,"/");
  itoa(yr,temp,10);
  strcat(str,temp);

  return (date(str));
  }

};

int main
{
 date d1;
 dmy d2(17,11,94);

 d1=d2;

 //display d1's and d2's data
 return 0; 
}

私の混乱は、演算子の date() 部分にあります。どのように日付を演算子にすることができますか? この変換を実行するために = 演算子をオーバーロードするべきではありませんか?

4

2 に答える 2

1

この形式の関数

operator T() { /*return an object of type T*/ }

T型のオブジェクトが任意の式で必要な場合に暗黙的に呼び出される、ユーザー定義の変換関数と呼ばれます。

あなたの場合、ユーザー定義の変換関数は、 type のオブジェクトを type のオブジェクトに暗黙的に変換するように定義されてdmyいますdate

void f(date dt);

dmy dmyObj; 

date dateObj = dmyObj; //ok. conversion function is invoked implicitly
f(dmyObj); //ok. conversion function is invoked implicitly
于 2012-04-14T15:54:50.293 に答える