<class> tmp = <value>之间的区别是什么?和<class> tmp; tmp = <值>;?

时间:2015-04-29 11:49:50

标签: c++ operator-overloading

我有一个重载 operator =(const char&amp;)

的类
_obj operator=(const char& in){
    this->out = convert(in);
    return *this;
}

使用&#39; this-&gt; out &#39;属于班级 string

我能做到:

_obj tmp;
tmp = 'c';

程序编译并按预期运行。

但是当我这样做时:

_obj tmp = 'c';

我收到编译错误:

  

错误:从&#39; char&#39;转换到非标量类型&#39; _obj&#39;请求。

这两个陈述之间究竟有什么不同?

第一个语句使用第一行的构造函数 _obj :: _ obj()创建一个_obj类型的对象,并使用重载的 operator =(const char&amp;)来分配 char 第二行。

第二个语句尝试直接将char转换为_obj的类型,但为什么会这样,当有 operator = 告诉该怎么做时。

如何形成类和运算符以允许在单行代码中创建和赋值?

提前致谢

0 个答案:

没有答案