c++ - 用户定义类的构造函数不适用于 vector

标签 c++ class vector constructor

我的问题很简单,类的构造函数没有使用 std::vector

class my_class
{
public:
    my_class() { std::cout << "my_class constructed\n"; }
};

int main()
{
    std::vector <my_class> v;
}

程序没有输出任何东西,尽管它应该输出my_class constructed。然后我假设构造函数适用于 vector 的每个元素,所以我这样做了:

class my_class
{
public:
    my_class() { std::cout << "my_class constructed"; }
};

int main()
{
    my_class object;
    std::vector <my_class> v;
    v.push_back( object );
}

这段代码输出:

my_class constructed 

这个构造是因为 my_class 对象,而不是因为使用 push_back()

如何让构造函数为 std::vector 工作? 如果您需要任何进一步的详细信息,我很乐意提供。

最佳答案

在第二种情况下,您正在构造一个对象并在 vector 中复制构造它。如果您想直接在 vector 内部构造,我建议使用不带参数的 emplace_back:

v.emplace_back();

关于c++ - 用户定义类的构造函数不适用于 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44531541/

相关文章:

c++ - 无法解决cocos2dx中的 "error: candidate is:"

android - 导入我的自定义类并调用它的方法?

java - Java中如何共享类对象?

java - 错误: variable might not have been initialized & if statement

c++ - 运算符重载示例不清楚

c++ - 当我输入 3 个偶数时,它显示我输入 4

c++ - C++ DLL不调用MessageBox; “未定义成员消息框”

c++ - 用平面内存结构替换 vector 的 vector

Matlab 图另存为(矢量)EMF 但渲染为栅格

c++ - 通过 vector 下标访问 Fortran 数组,cpp 等效