不让你拷贝
在应用中我们可能会碰到不允许使用拷贝这样的操作,我们实现这个约束有两种方案。第一是声明这个函数,然后不实现他。这样的话能够实现这功能,但是报错的时候编译器不会报错
#include <iostream>
using namespace std;
class my_class {
public:
my_class() {}
my_class(const my_class& rhs);
};
int main() {
my_class m;
my_class m2(m);
}
然后链接器重锤出击。
Undefined symbols for architecture x86_64:
"my_class::my_class(my_class const&)", referenced from:
_main in cc9GRPax.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
我也觉得这样有点坑爹。
正确的做法应该是将这些不希望被使用的函数显示定义为私有函数。这样的话在编译期就会被发现,然后报错。
#include <iostream>
using namespace std;
class my_class {
my_class(const my_class& rhs) {}
public:
my_class() {}
};
int main() {
my_class m;
my_class m2(m);
}