我正在学习 C++,我的老师写了这段代码:



我想知道为什么我们不写:

TPoint TObjetGraphique::getOrigine() const
   {return origine;}

有什么区别吗?

最佳答案

教师代码中的类型转换完全没有意义



假设 origineTPoint 类型。

如果 origine 的类型可以以任何方式转换为 TPoint ,那么显式转换也是毫无意义的。

如果该语法有原因,那么 TPoint 具有构造函数声明,例如

struct SomethingElse {
    int a_;
    int b_;

    explicit SomethingElse(int a, int b) : a_(a), b_(b) {}
    SomethingElse() = default;
};

class TPoint {
public:
    explicit TPoint(SomethingElse rhs)  : x_(rhs.a_), y_(rhs.b_) {
        std::cout << "TPoint::TPoint(const SomethingElse& rhs)" << std::endl;
    }
private:
    int x_;
    int y_;
};

int main() {
    SomethingElse something;
    // TPoint pt1({2,3}); // <<<<<<<<<< Fails
    TPoint pt2(something);
}

这看起来很不寻常,但最终可以防止 TPoint 无意中从 SomethingElse 实例化(参见 Live Demo )。

关于c++ - 方法返回的幕后是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47998765/

10-09 19:55