在C++中实例化私有字符串数组

Instantiating private string array in C++

本文关键字:字符串 数组 实例化 C++      更新时间:2023-10-16

在arraystorage类中声明,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;
}
================================

阵列存储.cpp==

================================

我的第一个问题是,如果我将名称声明为私人名称,则整个事情不起作用。如果我把它公开,它会起作用。

其次,您能否建议,如果我想将string *names声明为私有,我该如何使其工作?

使用像 std::vector<std::string> 这样的 RAII 感知类并删除赋值运算符。

此外,你可能想阅读三定律(如果你有析构函数、复制赋值运算符、复制构造函数;那么你应该拥有所有这些)。

(编辑:修复法律名称)