为什么c++ string对象不能直接用memcopy函数拷贝?
因为string里面的内容是存在堆上的,直接拷贝会造成两个string对象内容指向堆上的同一个地址,一个析构之后,再调用另外一个必然崩溃。
其实这里memcopy用的也就是浅拷贝,如果string内部内容不在堆上,那可以直接copy,也就是浅拷贝。
而string内部自己实现了copy构造函数,即深拷贝:创建一块儿内存,然后再copy过来。所以只能用string自带copy构造函数来实现。
为什么c++ string对象不能直接用memcopy函数拷贝?
因为string里面的内容是存在堆上的,直接拷贝会造成两个string对象内容指向堆上的同一个地址,一个析构之后,再调用另外一个必然崩溃。
其实这里memcopy用的也就是浅拷贝,如果string内部内容不在堆上,那可以直接copy,也就是浅拷贝。
而string内部自己实现了copy构造函数,即深拷贝:创建一块儿内存,然后再copy过来。所以只能用string自带copy构造函数来实现。