gpt4 book ai didi

c++ - 在 C++ 中实例化私有(private)字符串数组

转载 作者:行者123 更新时间:2023-11-28 08:04:54 27 4
gpt4 key购买 nike

在数组存储类中声明,private: string *names;

ArrayStorage& ArrayStorage::operator=(const ArrayStorage& rhs)
{
// possible error
names = new string[numOfElements];

return *this;
}

// copy constructor
ArrayStorage::ArrayStorage(const ArrayStorage& rhs):
names(new string[numOfElements]),

numOfElements(rhs.numOfElements)
{
//names = new string[this->getNumOfElements()];

for (int i = 0; i < this->getNumOfElements(); i++)
names[i] = rhs.names[i];

}

ArrayStorage::~ArrayStorage(void)
{
delete [] names;
}

================================ ArrayStorage.cpp============ ==================

我的第一个问题是,如果我将名称声明为私有(private),则整个过程将无法正常工作。如果我将其公开,它就会起作用。

其次,如果我想将 string *names 声明为 private,你能告诉我如何让它工作吗?

最佳答案

使用 RAII 感知类,如 std::vector<std::string>并删除赋值运算符。

此外,您可能需要阅读三定律(如果您有析构函数、复制赋值运算符、复制构造函数中的任何一个;那么您应该拥有所有这些)。

(编辑:修复法律名称)

关于c++ - 在 C++ 中实例化私有(private)字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10467330/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com