ページ 11

C++コンストラクタについて

Posted: 2013年12月26日(木) 00:02
by sql
C++とDXライブラリでプログラミングを学習しているのですが、コンストラクタの引数の多さと、処理速度などの関係を知りたいです。
例えば

コード:

hoge::hoge(float hoge1, int hoge2, int hoge3 , bool hoge4, float hoge5, int hoge,....)
{
   //初期化
}
と、とあるオブジェクトのコンストラクタがあったとします。そして、newするときに長ったらしく引数を書いていきます。
また、この場合、hoge1,hoge2は座標と仮定して見てみると、セッター関数を用意してnewするときに一緒に・・・というやり方も出来ると思います。

ここで質問なのですが、
セッター関数を用意すると、newした後にセッター関数に値を入れるので僅かに処理が遅くなるのではないか?
引数が多すぎると処理速度が遅くなる
そもそもC++においてコンストラクタに引数なんて持たせずにセッター関数によって全ての値を取得する

【付加質問】そもそもC++においてコンストラクタで初期化せずにinitialize関数などを作り、そこでメンバ変数を初期化する(このトピックのメインの質問とは少し違いますが)
よろしくお願いします。

Re: C++コンストラクタについて

Posted: 2013年12月26日(木) 00:05
by h2so5
文章が疑問形になっていないので何を質問したいのかが分かりません。

Re: C++コンストラクタについて

Posted: 2013年12月26日(木) 00:27
by sql
h2so5 さんが書きました:文章が疑問形になっていないので何を質問したいのかが分かりません。
セッター関数を用意すると、newした後にセッター関数に値を入れるので僅かに処理が遅くなるのではないか?
引数が多すぎると処理速度が遅くなる(のではないか?)
そもそもC++においてコンストラクタに引数なんて持たせずにセッター関数によって全ての値を取得する(のではないか?)

【付加質問】そもそもC++においてコンストラクタで初期化せずにinitialize関数などを作り、そこでメンバ変数を初期化する(という方法が一般的ではないのか?)(このトピックのメインの質問とは少し違いますが)

ていうか、1行目って疑問文と読み取れなかったのでしょうか?
よろしくお願いします。

Re: C++コンストラクタについて

Posted: 2013年12月26日(木) 00:50
by h2so5
sql さんが書きました: セッター関数を用意すると、newした後にセッター関数に値を入れるので僅かに処理が遅くなるのではないか?
関数呼び出しのオーバーヘッドは余分にかかるでしょうね。
sql さんが書きました: 引数が多すぎると処理速度が遅くなる(のではないか?)
単純にコピーするデータが多ければ時間がかかります。
引数が少なくても巨大な構造体をコピーしていれば時間がかかります。
sql さんが書きました: そもそもC++においてコンストラクタに引数なんて持たせずにセッター関数によって全ての値を取得する(のではないか?)
文章の意味が分かりません。セッター関数は値を設定するためのものです。
sql さんが書きました: 【付加質問】そもそもC++においてコンストラクタで初期化せずにinitialize関数などを作り、そこでメンバ変数を初期化する(という方法が一般的ではないのか?)(このトピックのメインの質問とは少し違いますが)
少なくとも引数付きコンストラクタが利用できる状況でわざわざinitialize関数を作ることはないでしょう。

Re: C++コンストラクタについて

Posted: 2013年12月26日(木) 00:58
by sql
返信ありがとうございます。
疑問に思っていたことが解決できました。