如果我在其中包含的类的构造函数中使用成员初始化列表,char*
它是将值复制到新分配的内存还是只是将指针指向相同的值?
前任。
MyString::MyString(const MyString & other) : m_str(other.m_str) {}
这会很好还是我应该逐个运行单元格来复制信息?
编辑:只是为了澄清我改变了一行的问题。
如果我在其中包含的类的构造函数中使用成员初始化列表,char*
它是将值复制到新分配的内存还是只是将指针指向相同的值?
前任。
MyString::MyString(const MyString & other) : m_str(other.m_str) {}
这会很好还是我应该逐个运行单元格来复制信息?
编辑:只是为了澄清我改变了一行的问题。
我只是复制指针,所以它们都指向同一个字符串。
如果您稍后想要删除指向的字符串,这可能会导致您出现问题。
它两者兼而有之:
它复制指针。
指针的副本指向与原始相同的东西。
指针变量(以一种非常简单的方式看待它)基本上只不过是一个由编译器专门处理的整数变量。(初始化的)指针变量的内容是它在内存中指向的地址。
如果将一个指针变量初始化为另一个指针变量的内容,则会复制内容,从而导致两个不同的变量都具有相同的内容并且都指向相同的内存。