我正在使用一个非我自己编写的库.有些类在其头文件中声明了类似的构造函数
class SomeClass {
public:
SomeClass(const SomeClass& orig);
// more declarations
}
Run Code Online (Sandbox Code Playgroud)
但是.cpp文件中没有实现.为什么代码编译呢?
如果从未使用该函数,代码将编译并链接.
如果有一种老式的禁止对象深层副本的方式,那么你所拥有的是一个相当普遍的东西:如果编译器尝试获取一个,那么链接器将失败.
这些天,你可以使用C++ 11构造函数delete习语:
SomeClass(const SomeClass& orig) = delete;
Run Code Online (Sandbox Code Playgroud)
这是禁用类的复制构造函数的一种方法.通常,声明也是private如此(您至少会获得一个很好的访问修饰符错误,而不是链接器错误).
C++ 11的方法如下:
SomeClass(const SomeClass& orig) = delete;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |