当前位置:  开发笔记 > 编程语言 > 正文

将指针传递给const ref函数

如何解决《将指针传递给constref函数》经验,为你挑选了1个好方法。

为什么以下工作?

#include 
using namespace std;

class PolyLine {
public:
  PolyLine() = default;
  PolyLine(PolyLine * ptr) {
    std::cout << "Ctor called" << std::endl;
  }

};

void function(const PolyLine& pt) {
}

int main() {

    PolyLine *pobj = new PolyLine();

    function(   pobj );

    return 0;
}

似乎隐式转换以某种方式被调用..为什么我没有得到编译错误?



1> TartanLlama..:

它的工作原理是因为你正在调用隐式转换构造函数,因为当你将某些东西作为参数传递并且你有一个非显式构造函数接受一个参数时会发生这种情况.

如果您不希望在此实例中发生隐式转换,则可以将构造函数标记为explicit:

explicit PolyLine(PolyLine * ptr) {
    std::cout << "Ctor called" << std::endl;
}

也就是说,让构造函数获取指向同一个类的另一个对象的指针似乎有点奇怪; 为什么不用const PolyLine&

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有