小编Has*_*een的帖子

对象向量 - 如何向构造函数发送参数?

假设我有以下代码:

struct obj{
    int v;
    obj(int i = 1){
        v = i;
    }
};

int main(){
    vector<obj> v1(10);    // (1)
    vector<obj> v2(15);    // (2)
}
Run Code Online (Sandbox Code Playgroud)

按上述:

Number (1) 创建一个具有 10 个实例的向量,obj默认为v=1
数(2)如何将15作为参数发送给objso v=15???

我在网上搜索并在这个网站上找到了这篇文章,但它似乎是关于更高级的东西,作为一个新手,我没有明白它。

c++ parameters constructor vector

3
推荐指数
1
解决办法
777
查看次数

将 shared_ptr 与对象数组一起使用

我看了一些关于 C++ 共享指针的教程,我有几个问题试图在互联网上找到答案,但没有运气。

考虑以下代码:

class A{
    int v,u;
public:
    A(){}
    A(int p1, int p2): v(p1), u(p2) {}
    ~A(){};
};

void f()
{
    shared_ptr<A> c(new A[5]);
    // Is it correct that this causes a memory leak because...
    //... the default deleter only deletes c[0] ?
    // If yes, is this still true for C++17 and C++20 ?

    shared_ptr<A> d(new A[5], [](A* ptr){ delete [] ptr;});
    // how to pass non-default constructor argument in this case ?
}

int main(){
    f();
} …
Run Code Online (Sandbox Code Playgroud)

c++ memory-leaks smart-pointers parameter-passing shared-ptr

3
推荐指数
1
解决办法
1263
查看次数