小编lqr*_*lqr的帖子

什么是shared_ptr的别名构造函数?

在此页面(http://www.cplusplus.com/reference/memory/shared_ptr/)第5段中,它说:

此外,shared_ptr对象可以在指向另一个对象的同时共享指针的所有权.此功能称为别名(请参阅构造函数),通常用于指向成员对象,同时拥有它们所属的对象.因此,shared_ptr可能与两个指针有关:

  • 存储指针,它是指向它的指针,以及它与运算符*取消引用的指针.

  • 一个拥有的指针(可能是共享的),它是所有权组在某个时刻负责删除的指针,并且它被视为一个用途.

通常,存储的指针和拥有的指针引用相同的对象,但是别名shared_ptr对象(使用别名构造函数及其副本构造的对象)可以引用不同的对象.

然后我读了这页(http://www.cplusplus.com/reference/memory/shared_ptr/shared_ptr/)关于shared_ptr的别名构造函数.但我仍然认为这种"走样"行为令人困惑.为什么在这里?它是为了什么?在什么情况下我想要这个功能?

c++ c++11

40
推荐指数
1
解决办法
6994
查看次数

如何实现std :: map,以便它可以要求其key_type具有可比性?

这是我对Box类的实现:

class Box {
    friend ostream& operator<<(ostream &os, const Box &b);
    friend bool operator<(const Box &left, const Box &right);
public:
    Box(int i, double d);
    ~Box();
private:
    int i;
    double d;
};

Box::Box(int _i, double _d):i(_i), d(_d) {}

Box::~Box() {}

bool operator<(const Box &left, const Box &right)
{
    return (left.i < right.i);
}

ostream& operator<<(ostream &os, const Box &b)
{
    os << b.d;
    return os;
}
Run Code Online (Sandbox Code Playgroud)

这个测试代码:

int main()
{
    Box b1(3,2), b2(2,1), b3(0, 9);
    map<Box, int> bmap;
    bmap.insert(pair<Box,int>(b1, 10));
    bmap.insert(pair<Box,int>(b2, …
Run Code Online (Sandbox Code Playgroud)

c++ map

16
推荐指数
3
解决办法
2212
查看次数

为什么C++不允许重新绑定引用?

重新引用引用是一个问题吗?我在Google上搜索了这个问题,但我找不到这个问题的相关答案.是什么让C++的设计师决定这样做?

c++

5
推荐指数
2
解决办法
1368
查看次数

标签 统计

c++ ×3

c++11 ×1

map ×1