成员初始化列表是否复制字符串C++
Does member initialization list copy string C++
如果我在 class 的构造函数中使用成员初始化列表,其中包含 char*
,它是将值复制到新分配的内存还是仅将指针指向相同的值?
例如
MyString::MyString(const MyString & other) : m_str(other.m_str) {}
这样可以吗,还是我应该 运行 一个单元一个单元地复制信息?
编辑:为了澄清问题我换了一行。
两者兼顾:
复制指针。
指针的副本指向与原来相同的东西。
我只是复制指针,所以它们都指向同一个字符串。
如果您以后要删除 pointed-to 字符串,这可能会给您带来麻烦。
指针变量(以一种非常简单的方式看待它)基本上只不过是一个由编译器专门处理的整数变量。 (已初始化的)指针变量的内容是 地址 它指向内存中的位置。
如果将一个指针变量初始化为另一个指针变量的内容,则会复制内容,导致两个不同的变量都具有相同的内容并且都指向相同的内存。
如果我在 class 的构造函数中使用成员初始化列表,其中包含 char*
,它是将值复制到新分配的内存还是仅将指针指向相同的值?
例如
MyString::MyString(const MyString & other) : m_str(other.m_str) {}
这样可以吗,还是我应该 运行 一个单元一个单元地复制信息?
编辑:为了澄清问题我换了一行。
两者兼顾:
复制指针。
指针的副本指向与原来相同的东西。
我只是复制指针,所以它们都指向同一个字符串。
如果您以后要删除 pointed-to 字符串,这可能会给您带来麻烦。
指针变量(以一种非常简单的方式看待它)基本上只不过是一个由编译器专门处理的整数变量。 (已初始化的)指针变量的内容是 地址 它指向内存中的位置。
如果将一个指针变量初始化为另一个指针变量的内容,则会复制内容,导致两个不同的变量都具有相同的内容并且都指向相同的内存。