滥用move()当然是不对的。
不过好像不存在“接口里面滥用move”这种事情。move不在接口里啊。
【 在 ble (ble) 的大作中提到: 】
: 标 题: Re:std::string&&用法
: 发信站: 水木社区 (Wed Oct 21 11:37:16 2020), 站内
:
: 为什么要move进来呢,接口里面滥用move就是找死吧,不要因为move能提高性能就到处用,除非明确是瓶颈。
: 【 在 bihai 的大作中提到: 】
: :
: : 有一个类我需要加一个有默认值的参数,一般调用时使用的都是字符串const char\[\]作为参数,就是原来的Type::NAME_。现在需要有的时候传入别的名字。
: : template <Type>
: : class A {
: : public:
: : A(X x, std::string name = Type::NAME_):A(.., std::move(name)){}
: : A(X x, ..., std::string name):b_(..., std::move(name)){
: : b_.emplace(,,std::move(name));
: : }
: : private:
: : B b_;
: : };
: :
: : class B {
: : public:
: : B(..., std::string name):name_(std::move(name)),c_(...){
: : c_->Add(name_); // was Add(Type::NAME_);
: : }
: : ~B(){c_->Remove(name_); // was Remove(Type::NAME_);
: : private:
: : std::string name_;
: : C* c_;
: : }
: :
: : 使用的时候,原来A a(...);即可,现在A a(..., "dfddf");
: :
: : 问题是,我在哪里需要std::move?函数定义需要吗?
: : --
:
: 发自「今日水木 on 钛星」
: --
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 222.129.49.*]
--
FROM 76.126.252.*