C++ の setter 関数は copy&move がそこそこいける ― 2021年11月20日 12時37分37秒
複数の 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: http://uyota.asablo.jp/blog/2021/11/20/9441703/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。