c++ - 将指针传递给 const ref 函数

标签 c++

为什么下面的方法有效?

#include <iostream>
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;
}

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

最佳答案

之所以有效,是因为正在调用您的隐式转换构造函数,因为当您将某些内容作为参数传递并且您有一个采用单个参数的非显式构造函数时,就会发生这种情况。

如果你不想在这个实例中发生隐式转换,你可以将构造函数标记为explicit:

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

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

关于c++ - 将指针传递给 const ref 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34060755/

相关文章:

c++ - 如何从 qml Keys.onPressed 调用 qt keyPressEvent(QKeyEvent *event)

c++ - 文件读取类C++

c++ - CreateProcess 在 Windows7 64 位中失败,错误代码为 '740'

c++ - Xcode 新手无法在 C++ 中打开文件?

c++ - 将节点数组(可变长度)转换为 const float** 以调用 opencv.calcHist

c++ - 试图使我的枚举等同于 std::error_code

C++ BHO(IE插件)问题

c++ - 在宏中生成方法名称

c++ - 运行时错误 : load of value 127, 这不是类型 'bool' 的有效值

c++ - 使用 ctypes : undefined symbol 包装 C++