相关疑难解决方法(0)

什么是string_view?

string_view是C++ Library Fundamentals TS(N3921)中添加到C++ 17中的一个提议特性

据我所知,它是一种代表某种字符串"概念"的类型,它是任何类型的容器的视图,可以存储可视为字符串的东西.

  • 这是正确的吗 ?
  • 规范const std::string&参数类型应该 变成string_view吗?
  • 还有另一个重要的问题string_view需要考虑吗?

c++ fundamentals-ts string-view c++17

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

何时使用shared_ptr以及何时使用原始指针?

class B;

class A
{
public:
    A ()
        : m_b(new B())
    {
    }

    shared_ptr<B> GimmeB ()
    {
        return m_b;
    }

private:
    shared_ptr<B> m_b;
};
Run Code Online (Sandbox Code Playgroud)

假设B是一个在语义上不应该存在于A的生命周期之外的类,也就是说,B对于它自身存在完全没有意义.应该GimmeB退还shared_ptr<B>还是B*

一般来说,完全避免在C++代码中使用原始指针代替智能指针是一种好习惯吗?

我认为shared_ptr只应该在有明确的转让或共享所有权的情况下使用,我认为在函数分配一些内存,用一些数据填充并返回它的情况下很少见,并且有理解在调用者和被调用者之间,前者现在对该数据"负责".

c++ smart-pointers

73
推荐指数
4
解决办法
4万
查看次数