我现在正在学习 C++。这是一种非常复杂的语言,我不确定应该使用哪个功能以及何时使用。
C++ Primer 引入了 RAII 作为确保异常安全的方法。这是否意味着,作为一种良好的行为,当我想使用数组时,我应该将数组放入一个类中以分配和销毁资源。我知道我的想法很简单,或者说很幼稚。
我只是好奇什么是好的 C++ 编码行为。
RAII 意味着资源与对象生命周期相关。
C++ 的每个 STL 类都遵循这个原则,这意味着如果你需要一个数组,你可以简单地使用std::vector.
当您的实例超出范围时,vector 类的析构函数将负责删除资源。
这意味着在你的情况下,而不是像这样使用 new:
int *array = new int[n];
Run Code Online (Sandbox Code Playgroud)
你应该使用:
vector<int> array(n);
Run Code Online (Sandbox Code Playgroud)
如果你真的需要在堆上分配一个共享指针并且使用 RAII 仍然是安全的,你可以这样做(需要 C++11):
shared_ptr<vector<int>> array(new vector<int>(10));
Run Code Online (Sandbox Code Playgroud)