c++ - vector 中对象的初始化

标签 c++

简单的是/否问题(我认为)。如果我在文件范围内声明以下内容:

struct SoundTouchExt
{
    SoundTouch sTouch;
    int channels;
    int sampleRate;
    float tempoChange;
    int pitchSemi;
    int bytesPerSample;
};

const int MAX_TRACKS = 16;

vector<SoundTouchExt> sProcessors(MAX_TRACKS);

SoundTouch 是一个具有公共(public)默认构造函数的类,当我在函数中执行此操作时是否应该获得有效对象:

SoundTouchExt& soundTouch = sProcessors.at(0);
SoundTouch& sTouch = soundTouch.sTouch;

我期望 sTouch 是一个使用默认构造函数构造的 SoundTouch 对象。有没有我可能会遗漏的隐藏陷阱?如果需要,我会详细介绍。

最佳答案

您的期望是正确的。您有 16 个默认构造的 SoundTouchExt 实例(每个实例都包含一个默认构造的 SoundTouch 实例)。

请注意,保留 SoundTouchExt 引用 需要小心,因为以某些方式修改 vector (例如,向其添加元素)可能会使引用无效。

关于c++ - vector 中对象的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21065254/

相关文章:

c++ - 概率和随机数

c++ - DMProcessConfigXML 用于 WM/CE 平台卸载时正在关闭正在运行的应用程序

C++ 'AND' 评估 - 标准有保证吗?

c++ - 从它之后声明的另一个成员数据初始化一个成员数据是未定义的行为吗?

c++ - 返回数组但也接受函数作为参数的函数

c++ - 在 C++ 中遍历对列表的正确方法?

c++ - 在 BISON 中什么时候调用 %destructor?

c++ - C++ std::mutex 如何绑定(bind)到资源?

java - 使用 Android (ndk) 在 C++ 中打开和读取文本文件

c++ - 将 std::vector<T> move 到 T*