求助一个 C++ 构造函数问题

2021-02-01 11:24:04 +08:00
 mathzhaoliang

求助大家一个问题:下面的代码会在方法 unitVec2 处报 no matching constructor 的错误,提示 candidate constructor not viable,请问这是为什么?但是当我去掉 explicit Vec2(const Vec2 &v) : x_(v.x()), y_(v.y()) {} 前面的 explicit 关键字以后就正常了,这个 explicit 的问题在哪里?

class Vec2
{
public:

    Vec2() : x_(0), y_(0) {}
    explicit Vec2(double a) : x_(a), y_(a) {}
    Vec2(double a, double b) : x_(a), y_(b) {}
    explicit Vec2(const Vec2 &v) : x_(v.x()), y_(v.y()) {}

    static Vec2 unitVec2(const double angle)
    {
        return Vec2(cos(angle), sin(angle));
    }
protected:
    double x_;
    double y_;
};
1523 次点击
所在节点    C++
4 条回复
wutiantong
2021-02-01 15:58:00 +08:00
你可以自己解释一下,你对那个 explicit 有啥预期?
mathzhaoliang
2021-02-01 16:57:45 +08:00
@wutiantong 我觉得那个 explicit 加或者不加应该没区别才对。
wutiantong
2021-02-01 17:43:16 +08:00
@mathzhaoliang 为啥没区别呢?你这个说法有啥出处?
Yienschwen
2021-02-03 11:35:30 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/750211

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX