値取得用関数について

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

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 値取得用関数について

Re: 値取得用関数について

#3

by Dixq (管理人) » 7年前

一般的にメンバ変数の値を取得するような関数であればget1の書き方をします。
int型であれば参照を返してもコピーを返してもほとんど計算コストは変わりません。
メンバ変数をいくつも持っているクラスや構造体の場合でオブジェクトの大きさが大きいときにポインタや参照を使います。

また、メンバ変数の参照を保持するとそのメンバ変数のライフサイクルを意識しなければなりません。
メンバ変数があるタイミングで開放されたら返り値もアクセスしてはいけないのです。
一方コピーを返していれば、返した先の責任で処理が可能なので、把握がしやすくなります。

Re: 値取得用関数について

#2

by エドモンド本田 » 7年前

計算後の値などを返すときに使うんですね。自己解決しました。

値取得用関数について

#1

by エドモンド本田 » 7年前

#include <iostream>
using namespace std;
class A{
public:
A(int value_) : value { value_ }
{
}
int get1() const {
return value;
}
const int& get2() const {
return value;
}
private:
int value;
};
int main(){
A a { 10 };
//例
cout << a.get1() << endl;
cout << a.get2() << endl;
return 0;
}
get1もget2も値を取得できるという点は同じです。
しかし、例のように値を取得した場合get2の方はget1に比べてコピーを生成していない分効率が良いと思うのです。
コピーを取得する関数を使用する利点があれば教えてください。

ページトップ