【C++基础 09】避免对象的拷贝

如果我们要使某个类不具备拷贝的功能,可写一个基类(base classes),然后将copy构造函数声明为private且不去实现它。

具体实现如下:

class A
{
public:
	A(){}
private:
	A(const A&);//copy构造函数为private且不实现它
	A& operator=(const A&);
};

class B : public A{
public:
	B(){}
	~B(){}
};

void main()
{
	A a ;
	A a1(a);    //error
	A a2 = a;   //error

	B b;
	B b1(b);    //error
	B b2 = b;   //error
	return;
}

所有错误的提示都是copy构造函数不能访问

【C++基础 09】避免对象的拷贝

时间: 2024-10-09 12:38:22

【C++基础 09】避免对象的拷贝的相关文章

魏兆辉的IOS基础学习笔记之十四 OC语言基础-09 OC对象的内存管理

一. 原理 对于任何继承了NSObject的对象,都有一个与之关联的整形变量,称为引用计数器:只有计数器的值为0的时候,OC就回收该对象,否则永不回收. 1. 创建对象时,如使用alloc ,new , copy,引用计数器的值为1 2. 当使用release方法释放时,计数器的值减1 3. 当使用retain方法时,计数器的值加1 4. 当对象被回收时候,自动调用对象的dealloc方法, 5. 使用retainCount方法来获取引用计数器的值 二. 防止内存泄露标准示例写法: @class

Java基础拾遗——数组与对象的拷贝

一.数组的拷贝主要有以下几种方式. 1.Object.clone() 该方法继承自Object类,数组元素为基础数据类型(boolean.char.byte.short.int.float.double.long)或String类型,均可使用. int[]  arr1 = {1,2,3}; int[]  arr2 = arr1.clone(); //arr2={1,2,3} String[] arr1 = {"a", "b"}; String[] arr2 = ar

使用序列化实现对象的拷贝

java提高篇(五)-----使用序列化实现对象的拷贝 分类:            [JAVA开发]-----Java提高篇2013-10-22 19:153668人阅读评论(5)收藏举报 javajava提高篇 摘自:http://blog.csdn.net/chenssy/article/details/12952063 目录(?)[+] 一浅拷贝问题 二利用序列化实现对象的拷贝       我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是

javaScript| 对象的拷贝

上一遍是我们基本素组的拷贝,当然少不了我们对象的拷贝,当然也有我们的浅拷贝和我们的深拷贝滴啦: 然后,深拷贝,从某个角度来说就是我们对象的继承: 对象拷贝分为浅拷贝(shallow)和深拷贝(deep)两种.浅拷贝只复制一层对象的属性,并不会进行递归复制,而javascript存储对象都是存地址的,所以浅拷贝会导致对象中的子对象指向同一块内存地址:而深拷贝则不同,它不仅将原对象的各个属性逐个复制出去,而且将原对象各个属性所包含的对象也依次采用深拷贝的方法递归复制到新对象上 先补充一点基础知识,然

Python基础09 面向对象的进一步拓展

Python基础09 面向对象的进一步拓展 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们熟悉了对象和类的基本概念.我们将进一步拓展,以便能实际运用对象和类. 调用类的其它信息 上一讲中提到,在定义方法时,必须有self这一参数.这个参数表示某个对象.对象拥有类的所有性质,那么我们可以通过self,调用类属性. class Human(object): laugh = 'hahahaha' def show_laugh(

Java基础09 类数据与类方法(转载)

我们一直是为了产生对象而定义类(class)的.对象是具有功能的实体,而类是对象的类型分类.这是面向对象的一个基本概念. static数据成员 有一些数据用于表述类的状态.比如Human类,我们可以用“人口”来表示Human类的对象的总数.“人口”直接描述类的状态,而不是某个对象. 类的所有对象共享“人口”数据.这样的数据被称为类数据成员(class field). 在类定义中,我们利用static关键字,来声明类数据成员,比如: class Human{    public Human(int

java提高篇(六)-----使用序列化实现对象的拷贝

我们知道在Java中存在这个接口Cloneable,实现该接口的类都会具备被拷贝的能力,同时拷贝是在内存中进行,在性能方面比我们直接通过new生成对象来的快,特别是在大对象的生成上,使得性能的提升非常明显.然而我们知道拷贝分为深拷贝和浅拷贝之分,但是浅拷贝存在对象属性拷贝不彻底问题.关于深拷贝.浅拷贝的请参考这里:渐析java的浅拷贝和深拷贝 一.浅拷贝问题 我们先看如下代码: public class Person implements Cloneable{ /** 姓名 **/ privat

Android基础-09

Android基础-09 内容提供者 01_为什么需要内容提供者 内容提供者:提供了统一的访问数据库的方式,可以让其他应用程序来调用. 02_编写内容提供者 步骤: 1.在工程中添加一个内容提供者的类,继承了ContentProvider类型,实现了增删改查的方法: 2.在清单文件中配置一个provider节点,指定authorities(相当于网站的域名,用来唯一标示一个内容提供者).exported为true(从4.1开始,exported没有指定为true,表示其他应用程序不能访问这个内容

对象的拷贝

对象的拷贝又被成为对象的克隆.对象的拷贝分为两种:浅拷贝和深拷贝. 浅拷贝 浅复制(浅克隆)被复制对象的所有变量都含有与原来对象相同的值,而所有的对其他对象的引用仍然只指向原来的对象,换言之,浅复制仅仅复制锁考虑的对象,而不复制它所引用的对象. 对象的浅拷贝是通过调用clone方法来实现的. 浅拷贝需要注意的细节: 1. 如果一个对象需要调用clone的方法克隆,那么该对象所属的类必须要实现Cloneable接口.2. Cloneable接口只不过是一个标识接口而已,没有任何方法.3. 对象的浅