怎么才能不必了解拷贝构造函数就能写一个具有一定功能的类
仅当准备用按值传递的方式传递类对象时,才需要拷贝构造函数
如果不写拷贝构造函数,编译器将为我创建
如何保证一个对象永远不会被通过按值传递方式传递
有一个简单的计算防止通过按值传递方式传递:声明一个私有拷贝构造函数。
甚至不必去定义它,除非成员函数或友元函数需要执行按值传递方式传递
如果用户试图用按值传递方式传递或返回对象,编译器将会发出一个出错信息
这是因为拷贝构造函数是私有的。因为已显式地声明我们接管了这项工作,
所以编译器不再创建默认的拷贝构造函数
//: C11:NoCopyConstruction.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
// Preventing copy-construction
class NoCC {
int i;
NoCC(const NoCC&); // No definition
public:
NoCC(int ii = 0) : i(ii) {}
};
void f(NoCC);
int main() {
NoCC n;
//! f(n); // Error: copy-constructor called
//! NoCC n2 = n; // Error: c-c called
//! NoCC n3(n); // Error: c-c called
} ///:~
NoCC(const NoCC&);
这里使用了const