' P '

whatever I will forget

C++ 関数に渡す値が大きくなる場合は値を渡すのではなく、referenceを渡す

いわゆるpass by valueとpass by reference。
pass by valueだと、関数がcallされたときに、値をそのままコピーしてしまう、ということはコピーされた変数にも空間が作られる。
pass by referenceだと、値をコピーせず、アドレスを参照にしにいく。
そのため、値が大きくなるとわかっている場合、コピーではなく、参照させたほうが効率が良い場合がある。

値参照のやり方は下記。 関数宣言部分の変数に、 &をつけるだけ。

#include <iostream>
#include <string>
#include <typeinfo>
using namespace std;

string print_string_list( const string &, const string &, const string & );
void clear_string_list( string &, string &, string & );

void string_list() {

    string s_1 {"a"};
    string s_2 {"b"};
    string s_3 {"c"};

    print_string_list(s_1, s_2, s_3);
    clear_string_list(s_1, s_2, s_3);
    print_string_list(s_1, s_2, s_3);
    

}

string print_string_list( const string &s_1, const string &s_2, const string &s_3 ) {

    cout << s_1 << "¥n" << s_2 <<  "¥n" << s_3 << endl;
    string test_1 = typeid(s_1).name(), test_2 = typeid(s_2).name(), test_3 = typeid(s_3).name();
    return test_1 + test_2 + test_3;
}


void clear_string_list(string &s_1, string &s_2, string &s_3) {
    
    s_1 = " ";
    s_2 = " ";
    s_3 = " ";
}