これは私が頻繁に受ける質問であり、最終的には好みのスタイルについて人々の意見を聞きたい.
コンストラクターでパラメーターまたはメンバーを (読み取り専用の目的で) 使用する方が良い/推奨される方法はありますか? たとえば、次の単純なベクトル クラスでは、次のようになります。
#include <iostream>
#include <array>
class SimpleDoubleVector {
private:
double * _data;
std::size_t _size;
public:
SimpleDoubleVector(double * data, std::size_t size) :
_size(size) {
_data = new double[size];
for (int k=0; k<size; ++k)
_data[k] = data[k];
}
~SimpleDoubleVector() {
delete[] _data;
}
};
したほうがいいですか
size
コンストラクター全体で使用する(示されているように)または- 最初に割り当て/初期化
_size
してから使用します_size
考えられる影響:
どちらが読みやすいですか?
どちらがより優れたパフォーマンスを発揮しますか (または、コピーの伝播により両方が同等になりますか)? 直観的には、パラメーターからの読み取りがより効率的であるように感じます。これは、パラメーターに書き込まれることがないためであり、依存関係グラフがより単純になります。
これは衒学的に思えるかもしれませんが、非常に頻繁に出てくるので、最善の方法を分析したいと思います(または、少なくとも長所と短所が何であるかをよりよく理解したいと思います)。