string_view是C++ Library Fundamentals TS(N3921)中添加到C++ 17中的一个提议特性
据我所知,它是一种代表某种字符串"概念"的类型,它是任何类型的容器的视图,可以存储可视为字符串的东西.
const std::string&参数类型应该
变成string_view吗?string_view需要考虑吗?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只应该在有明确的转让或共享所有权的情况下使用,我认为在函数分配一些内存,用一些数据填充并返回它的情况下很少见,并且有理解在调用者和被调用者之间,前者现在对该数据"负责".