operator ClassName(){ ... } c++

operator ClassName(){ ... } c++

本文关键字:c++ ClassName operator      更新时间:2023-10-16

我遇到了一个看起来像这样的代码:

class Person { ... };
class PersonBuilder{
  Person p;
protected:
  Person& person;
  ...
  operator Person(){
    return std::move(person);
  }
};

"操作员(("试图做什么?我看到它会返回人,但是如果这是全部意图,那么返回类型不是"人"。而不是操作员?为什么我们在这里使用"操作员"?

如果是,请原谅您的天真问题。

此语法定义了人构建器类的人构造运算符,因此当将操作员称为一个人时,一个人构建者:

personBuilder builder;
Person person{builder};

PersonBuilder类中的个人对象已移出,这等同于铸造。

请注意,将人对象从人构建器对象中移出,使其再次无法访问。您会更好地返回对象的副本。