C++ の setter 関数は copy&move がそこそこいける2021年11月20日 12時37分37秒

最近の C++ の復習の備忘録。C++ で xvalue が導入されたため、setter 関数を最適化するのが若干厄介になった。

複数の setter を実装したり、テンプレートを使ったりしなければ、copy&move がそこそこのパフォーマンスを保ったまま、コードを減らせる。

void setName( std::string name )

{
    d_name = std::move( name );
}

手間をかければ、こちらの方が良いが、コードの量が増える。

void setName( const std::string& name )

{
    d_name = name;
}

void setName( std::string&& name )

{
    d_name = std::move( name );
}

テンプレートで実装すれば、二つ書かなくても良くはなるが、型が曖昧になったり、実装をヘッダに置く必要がある。厳しく制約するのであれば、さらに手間が掛かる。

template> typename T>
void setName( T&& name )

{
    d_name = std::forward<T>( name );
}

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2021/11/20/9441703/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。