C++中的位拷贝和值拷贝

AR-HMM模型 自回归隐马尔可夫模型 AR-HMM模型 自回归隐马尔可夫模型 数据处理过程 输入的视频数据首先需要被裁剪以适合动物的大小,在这之后考虑到模型建立的目的为行为状态的分类,于是需要消除可能一帧里带有多个动作状态的行为成分,这个过程也就是对帧。对帧之后我们的为了适应模型训练还需要对每一帧的数据进行小波分解(类似傅里叶变换的信号重构),此时数据预处理阶段完成。 信号重构后的数据拥有的特征维度过多,因此需要应用主成分分析法(PCA)来选出对于分类结果贡献度最高的前十个分类特征。至此自回归隐马尔可夫模型的准备工作就完成了。 AR-HMM自 阅读详情

为了便于说明我们以String类为例:

首先定义String类,而并不实现其成员函数。


Class String{
public:
    String(const char *ch=NULL);//默认构造函数
    String(const String &str);//拷贝构造函数
   ~String(void);
   String &operator=(const String &str);//赋值函数
private:
   char *m_data;
};


位拷贝拷贝的是地址,而值拷贝则拷贝的是内容。如果定义两个String对象A和B。A.m_data和B.m_data分别指向一段区域,A.m_data="windows",B.m_data=“linux";


如果未重写赋值函数,将B赋给A;则编译器会默认进行位拷贝,A.m_data=B.m_data


则A.m_data和B.m_data指向同一块区域,虽然A.m_data指向的内容会改变成"linux",但是这样容易出现这些问题:

(1):A.m_data原来指向的内存区域未释放,造成内存泄露。

(2):A.m_data和B.m_data指向同一块区域,任何一方改变都会影响另一方

 (3):当对象被析构时,B.m_data被释放两次。

对于编译器,如果不主动编写拷贝函数和赋值函数,它会以“位拷贝”的方式自动生成缺省的函数。

如果重写赋值函数和拷贝构造函数后,

A.m_data=B.m_data,进行的是值拷贝,会将B.m_data的内容赋给A.m_data,A.m_data还是指向原来的内存区域,但是其内容改变。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/liam1122/archive/2007/12/25/1966617.aspx

【开源~磁悬浮】零代码,纯硬件闭环:从霍尔到H桥的磁悬浮稳定术 本文详细介绍了如何不依赖任何代码,仅通过模拟数字电路的组合,实现一个完整的磁悬浮闭环控制系统。从霍尔传感器检测置,到运放电路进行信号调理与模拟PID控制,再到H桥驱动电磁铁执行纠偏,全程使用基础电子元器件搭建。文章深入剖析了系统原理、电路设计、调试技巧与实践经验,展现了纯硬件实现自动控制的独特魅力与挑战。 阅读详情

相关推荐

C++中的拷贝拷贝探讨

拷贝是指将一个数据对象的所有(bit)复制到另一个对象中,不管对象的类型含义如何。拷贝适用于简单的数据类型或内存块的复制,而拷贝适用于大多数的数据类型,包括自定义的类类型。这种拷贝方式是根据对象的类型结构进行的,它考虑了对象的语义内部成员。最后,我们打印出源对象目标对象的,可以看到它们的是相同的。最后,我们打印出源对象目标对象的,可以看到它们的是相同的。需要注意的是,对于自定义的类类型,进行拷贝时会调用类的拷贝构造函数(如果有定义),以确保正确地复制对象的所有成员。

CoderExtra的博客 293

C++中的拷贝拷贝

拷贝拷贝的是地址(也叫浅拷贝),而拷贝拷贝的是内容(深拷贝)。深拷贝拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程是深拷贝,反之,没有重新分配资源,是浅拷贝。   拷贝,及"bitwise assignment"是指将一个对象的内存映像按原封不动的复制给另一个对象,所谓拷贝是指,将原对象的复制一份给新对象。 在用"bitwise assignment"时会直接将对象的内存映像复制给另一个对象,这样两个对象会指向同一个内存区,当一个对象被释放后,另一个对象的指针会成为空指针。这时,应该编写operator=copy co

SpringBoot中集成eclipse.paho.client.mqttv3实现mqtt客户端并支持断线重连、线程池高并发改造、存储入库mqsqlredis示例业务流程,完整资源下载

SpringBoot中集成eclipse.paho.client.mqttv3实现mqtt客户端并支持断线重连、线程池高并发改造、存储入库mqsqlredis示例业务流程,完整资源下载。详细流程博客地址:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/145228187

拷贝构造函数与赋函数

为了便于说明我们以String类为例:首先定义String类,而并不实现其成员函数。 Class String{public:     String(const char *ch=NULL);//默认构造函数     String(const String &str);//拷贝构造函数   ~String(void);    String &operator=(const String

leukotrichia的博客 423

C/C++面试总结

1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态? 回答: virtual修饰符会被隐形继承的。 private 也被集成,只是派生类没有访问权限而已 virtual可加可不加 子类的空间里有父类的所有变量(static除外) 同一个函数只存在一个实体(inline除外) 子类覆盖它的函数不加virtual ,也能实现多态。 在子类的空间里...

WideHunt的博客 1481

c++拷贝剖析

c++拷贝剖析,完全掌握c++拷贝这一知识

weixin_52259848的博客 1714

C/C++中的三种拷贝方式

拷贝拷贝 写时拷贝

君子慎独,不欺暗室。卑以自牧,含章可贞。 729

C++对象拷贝

首先看下面这张图:假设我们现在有一个对象数组,里边有三个对象,O1、O2O3;但是随着业务逻辑的提升,这三个对象已经无法满足我们的使用了;那么我们肯定要再添加几个对象进去,但是我们又不想重新创建O1、O2、O3;那么怎么办呢?首先在C语言中,我们肯定是用一些拷贝函数之类的,通过赋拷贝将一个对象的内容拷贝给另一个对象进行使用;这个过程就叫对象拷贝;当然C++中也有类似拷贝对象内容的方式,并且C++编译器支持我们用更简单的方式进行内存复制,接下来就让我们看看C++中如何实现对象拷贝

qq_52572621的博客 3233

C++】类对象(中)---拷贝构造函数、赋运算符重载

【类对象】六大默认成员函数中的拷贝构造函数、赋运算符重载的详细介绍。

m0_74352571的博客 1871

关于C++拷贝(学习笔记03)

照片来自文中图片来自吉林大学计算机科学与技术学院网课

m0_65030720的博客 1203

C++ 类学习总结(三) 类的拷贝操作

拷贝操作 基本概念 ①.拷贝构造函数:是一种构造函数,用同类型的对象初始化本对象的操作,即将新对象初始化为同类型另一个对象的副本。 ②.拷贝运算符:接收一个本类型对象的赋运算符版本,返回本对象的引用。 类的默认函数 ①.默认合成函数 当我们定义了一个空类后,C++ 会为我们默认生成一个构造函数、一个拷贝构造函数、一个拷贝运算符、一个析构函数,并且默认都是 public 的;一旦我们定义了带参数的构造函数,那么编译器就不会再生成默认的无参构造函数了。 class Empty { };//

编程猿来如此 1375
上一篇: 我的飞鸽我做主 飞鸽传书 2.66版 升级记
sidchen
博客等级 码龄18年 1粉丝 1原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值