gpt4 book ai didi

具有队列作为成员的类的 C++ 构造函数和析构函数

转载 作者:行者123 更新时间:2023-11-27 22:33:09 24 4
gpt4 key购买 nike

我有一个头文件,我必须尊重它来实现我的类,它有这个:

class Example {
private:

std::queue<ObjectOfClass> Elements;

public:
Example ();
~Example ();

};

我试图将这段代码写入 .cpp 文件,但我不确定它是否合适:

// Constructor
Example::Example() {
std::queue<ObjectOfClass> Elements; //maybe I should leave it all empty? not sure
}

// Destructor
Example::~Example() {
while (!Elements.empty())
{
Elements.pop();
}
}

最佳答案

.cpp 文件中的几个错误:

  • 您正在构造函数的主体中定义一个本地元素队列,它将在完成时被销毁;像 Elements 这样的成员变量应该在初始化列表中初始化以获得最佳性能
  • 在析构函数中单独弹出每个元素是不必要的,因为 STL 容器会在它们被销毁时销毁其中包含的对象

因为你的构造函数和析构函数实际上并没有做任何事情,你甚至根本不需要定义它们。编译器会隐式地为你生成默认的构造函数和析构函数。类 std::queue 有自己的默认构造函数,当创建 Example 的元素时将调用它。

如果你想更明确一点,你可以使用 C++11 附带的关键字 default 来表示头文件本身中的构造函数和析构函数等特殊类成员函数,以及具有初始化成员变量元素的初始化列表:

Example(): Elements() {}
~Example() = default;

您可以使用默认和删除的功能来实现您的设计目标。

关于具有队列作为成员的类的 C++ 构造函数和析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58470181/

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