以下のコードを見てください。
関数a内で参照渡しされてきた変数に同じ型の別な変数を代入しています。
これは参照渡し(つまりアドレスとして)渡された変数に代入をするとアドレスを代入していることにになるという認識で間違い無いのでしょうか?
C++
1 2#include <iostream> 3#include <vector> 4using namespace std; 5 6struct Data{ 7 int aoi = 0; 8}; 9 10class A 11{ 12private: 13 std::vector<Data*> sender; 14public: 15 void a(std::vector<Data*> &getter); 16}; 17 18void A::a(std::vector<Data*> &getter) 19{ 20 for (int i=0; i<100; i++) { 21 sender.push_back(new Data); 22 } 23 getter = sender //ここは"アドレス"を書き換えているという認識で正しいですか? 24} 25 26int main() 27{ 28 29 A* aaa = new A(); 30 std::vector<Data*> sss; 31 aaa -> a(sss); 32 cout << sss[1]->aoi << endl; 33 return 0; 34}
追記
こんな感じでテストしてみるとなってるみたいです
C++
1 2#include <iostream> 3#include <vector> 4using namespace std; 5 6struct Data{ 7 int aoi = 0; 8}; 9 10class A 11{ 12private: 13 std::vector<Data*> sender; 14public: 15 void a(std::vector<Data*> &getter); 16 void b(); 17}; 18 19void A::a(std::vector<Data*> &getter) 20{ 21 for (int i=0; i<100; i++) { 22 sender.push_back(new Data); 23 } 24 getter = sender; 25} 26 27void A::b() 28{ 29 cout << sender[1]->aoi << endl; 30 sender[1]-> aoi = 9; 31} 32 33int main() 34{ 35 36 A* aaa = new A(); 37 std::vector<Data*> sss; 38 aaa -> a(sss); 39 sss[1]->aoi=1111; 40 cout << sss[1]->aoi << endl; 41 aaa -> b(); 42 cout << sss[1]->aoi << endl; 43 return 0; 44}
どーでもいいけど、 sender⇔receiver, setter⇔getter だからね。
回答2件
あなたの回答
tips
プレビュー