Re: [問題] vector初始化的問題
看板C_and_CPP (C/C++)作者StubbornLin (Victor)時間16年前 (2009/02/02 13:15)推噓0(0推 0噓 1→)留言1則, 1人參與討論串2/3 (看更多)
※ 引述《realmojo (蟹老闆)》之銘言:
: #include <vector>
: #include <iostream>
: using namespace std;
: class Bin;
: vector<Bin> *v;
: struct Bin {
: int *glass;
: Bin():glass(new int(0)) {}
: };
: int main() {
: v = new vector<Bin>(2);
: *(v->at(0).glass) = 9;
: cout << *(v->at(1).glass) << endl;
: }
: 為什麼output會是9而不是0?
我用debugger下去跑發現你的兩個Bin的glass都被改成9
原因在於似乎容器只會建構(construct)一個Bin
然後剩的都用copy的方式將它填滿整個陣列
因為是copy的方式 而你沒有寫復製的函數,它預設就是binary的方式一對一copy
導至vector裡的Bin指標都是指向同一個int的位置
改寫或讀取當然就是都指向同一個位置 會全都一樣
你可以用debugger下去跑跑看
--
哇咧咧 創意投票系統 http://walele.com
易記學 程式設計教學 http://ez2learn.com/
易記學 程式設計討論區 http://forum.ez2learn.com
VICTOR's 個人Blog http://blog.ez2learn.com/
財報分析王 http://victorlin.serveftp.org/stock/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.113.156.83
→
02/02 15:49, , 1F
02/02 15:49, 1F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章