gpt4 book ai didi

c++ - 这个函数怎么会是重载运算符呢?

转载 作者:行者123 更新时间:2023-11-28 08:06:45 24 4
gpt4 key购买 nike

这是一个程序,用于转换具有包含日期​​的字符串的对象和具有 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;
}

我的困惑在于 operator date() 部分。 date 怎么可能是运算符呢?不应该重载 = 运算符来执行此转换吗?

最佳答案

这种形式的函数

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

称为用户定义的转换函数,当任何表达式中需要类型为 T 的对象时,它会被隐式调用。

在您的情况下,用户定义的转换函数被定义为将类型 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

关于c++ - 这个函数怎么会是重载运算符呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10154949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com