跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 求助一个 C++ 构造函数问题
未分類
27 1 月 2021

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

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

資深大佬 : mathzhaoliang 3

求助大家一个问题:下面的代码会在方法 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_; }; 

大佬有話說 (4)

  • 資深大佬 : wutiantong

    你可以自己解释一下,你对那个 explicit 有啥预期?

  • 主 資深大佬 : mathzhaoliang

    @wutiantong 我觉得那个 explicit 加或者不加应该没区别才对。

  • 資深大佬 : wutiantong

    @mathzhaoliang 为啥没区别呢?你这个说法有啥出处?

  • 資深大佬 : Yienschwen

    Explicit copy constructor 本来就是用来阻止“复制初始化(copy initialization)”的,函数返回也是一种

    https://en.wikipedia.org/wiki/Copy_constructor_(C%2B%2B)#Explicit_copy_constructor
    https://en.cppreference.com/w/cpp/language/copy_constructor
    https://stackoverflow.com/questions/4153527/explicit-copy-constructor-behavior-and-practical-uses

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具