C++中 =号和memcpy的工作原理是什么,区别。

时间:2022-11-12 17:06:04
C++中 =号和memcpy的工作原理是什么,区别。能不能帮解答一下,今天写程序时出现了一个问题,就是因为等号和memcpy的问题,能不能帮我解决一下,谢谢!

9 个解决方案

#1


  =对应汇编里的mov
  memcpy对应 rep stos

#2


=赋值运算符
memcpy运行时库,用来复制指定内存

#3


对于自定义类型来说用memcpy肯定是一个噩梦。memcpy简单的拷贝每位bit。在C里面是没问题的,但是对于C++自定义类型,尤其含有虚函数,指针成员来说就是梦魇

#4


=一般需要重载

#5


=和memcpy通常情况下,都是浅拷贝。
用memcpy也可以实现深拷贝,只是比较麻烦。所以在C++为了实现深拷贝,通常都是重载“=”操作符。

#6


=能触发拷贝构造函数
memcpy不能

#7


对于内建类型和POD类型应该是没有区别的。
但对于其它类型就不同了,因为=调用的是operator=(),而memory根本不理会什么operator=(),直接一位一位的拷贝。

#8


哪这些东西在什么情况下用比较好呢??

#9


C++里:=是赋值运算,memcpy是内存拷贝,这就是区别.

#1


  =对应汇编里的mov
  memcpy对应 rep stos

#2


=赋值运算符
memcpy运行时库,用来复制指定内存

#3


对于自定义类型来说用memcpy肯定是一个噩梦。memcpy简单的拷贝每位bit。在C里面是没问题的,但是对于C++自定义类型,尤其含有虚函数,指针成员来说就是梦魇

#4


=一般需要重载

#5


=和memcpy通常情况下,都是浅拷贝。
用memcpy也可以实现深拷贝,只是比较麻烦。所以在C++为了实现深拷贝,通常都是重载“=”操作符。

#6


=能触发拷贝构造函数
memcpy不能

#7


对于内建类型和POD类型应该是没有区别的。
但对于其它类型就不同了,因为=调用的是operator=(),而memory根本不理会什么operator=(),直接一位一位的拷贝。

#8


哪这些东西在什么情况下用比较好呢??

#9


C++里:=是赋值运算,memcpy是内存拷贝,这就是区别.