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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sql

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

#1

投稿記事 by sql » 12年前

C++とDXライブラリでプログラミングを学習しているのですが、コンストラクタの引数の多さと、処理速度などの関係を知りたいです。
例えば

コード:

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

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

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 12年前

文章が疑問形になっていないので何を質問したいのかが分かりません。

sql

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

#3

投稿記事 by sql » 12年前

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

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

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

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

#4

投稿記事 by h2so5 » 12年前

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

sql

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

#5

投稿記事 by sql » 12年前

返信ありがとうございます。
疑問に思っていたことが解決できました。

閉鎖

“C言語何でも質問掲示板” へ戻る