mogmo .NET

C#/XAML/VB6たまにC++についてメモ程度に書いていく。あくまで自分用。責任は取れません。

CString引数の渡し方

12月までMFCのアプリを作ることになりました。
@mogmo1012です。

久しぶりにMFC触るとCStringの扱いかたをいつも忘れてしまう……

値渡し (CString text)

そのまま書くと値渡しになる。
長い文字列を渡すとメモリ食う。

void CSampleClass::A(){
    text = "aaa";
    Convert(text);
    std::cout << text << std::endl;
    // output: "aaa"
}

void CSampleClass::Convert(CString text){
   text = "bbb"
}

参照渡し (CString& text)

引数に値を渡せば、その変数のアドレスを使って処理してくれる。
関数内で書き換えたくない場合はconstをつける。
例)foo(const CString& text)

void CSampleClass::A(){
    text = "aaa";
    Convert(text);
    std::cout << text << std::endl;
    // output: "bbb"
}

void CSampleClass::Convert(CString& text){
   text = "bbb"
}

値渡し、ポインタ渡し、参照渡しについて

参考URLを2つ張っておきます。
cpp-lang.sevendays-study.com
qiita.com