[問題] 如何增大vector大小???
是這樣的 我當然知道使用push_back可以增加大小
不過我目前類似需要這樣的邏輯
class Foo
{
public:
Foo(){}
int *x;
}
vector<Foo> v;
for(i=0;i<5;i++)
{
Foo *temp=new Foo;
v.push_back(*temp);
delete temp;
}
以上我發現幾個我觀念上嚴重的問題就是 我認知上雖然他copy一份 可是
1.如果我在Foo裡面加了一個
void operator = (Foo a){cout<<"copy"<<endl;}
沒有印東西出來 , 讓我不禁懷疑他是不是copy
而我自己想寫個copy constructor去攔截 也無法
他跑出
no copy constructor available or copy constructor is declared 'explicit
超詭異
另一個觀念大問題就是
2.我去delete temp了
而temp->x 和 v[0]->x 指向同一塊記憶體
如果我在Foo的dstr 去 delete x; 那一定會有問題~~ 但我現在沒有寫
這樣是不是安全的? 雖然delete temp 可是他不會釋放x....
3.
我範例上的邏輯是想要動態增加一些Foo instance
但想來想去就我這種寫法
而我曾經看板上某大有說 不要再vecotr<紀錄指標> 比較好
但如果不記錄指標 ~如果需要動態長instance
如同我範例的x 他是一個指標 class裡面只要有指標
似乎就必須幫她寫operator= 和 copy cstr...
我知道他應該是發生shallow copy 可是我攔截不到他 operator=這個行為... 該怎麼辦
變成只要class裡面有pointer 我就不能夠用這種方式增大vector?
請問正統的寫法該如何做到呢?
4. 我加了destructor
int main()
{
vector<Foo> q;
Foo *p;
p=new A;
p->x=new int(5566);
q.push_back(*p);
return 0;
}
這幾行我發現他會呼叫兩次destructor
我怎麼覺得頂多q[0]他自己會去解構 另一個我沒delete阿 哪跑來的??
5. 因為最近有再碰win32
是不是該把hdc hwnd之類的都想成pointer去傳遞呢?
因為遇到一個怪問題(class裡面有包hdc...)才衍生上面一堆問題...
找不到bug = = 請教各位
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.87.64.222
※ 編輯: QQ29 來自: 219.87.64.222 (01/15 18:40)
→
01/15 18:38, , 1F
01/15 18:38, 1F
→
01/15 18:38, , 2F
01/15 18:38, 2F
→
01/15 18:38, , 3F
01/15 18:38, 3F
→
01/15 18:39, , 4F
01/15 18:39, 4F
→
01/15 18:40, , 5F
01/15 18:40, 5F
→
01/15 18:40, , 6F
01/15 18:40, 6F
→
01/15 18:41, , 7F
01/15 18:41, 7F
→
01/15 18:41, , 8F
01/15 18:41, 8F
→
01/15 18:42, , 9F
01/15 18:42, 9F
→
01/15 18:43, , 10F
01/15 18:43, 10F
→
01/15 18:43, , 11F
01/15 18:43, 11F
→
01/15 18:45, , 12F
01/15 18:45, 12F
→
01/15 18:45, , 13F
01/15 18:45, 13F
→
01/15 18:45, , 14F
01/15 18:45, 14F
→
01/15 18:46, , 15F
01/15 18:46, 15F
→
01/15 18:46, , 16F
01/15 18:46, 16F
→
01/15 18:49, , 17F
01/15 18:49, 17F
→
01/15 18:49, , 18F
01/15 18:49, 18F
→
01/15 18:50, , 19F
01/15 18:50, 19F
→
01/15 19:04, , 20F
01/15 19:04, 20F
→
01/15 19:12, , 21F
01/15 19:12, 21F
→
01/15 19:12, , 22F
01/15 19:12, 22F
→
01/15 19:29, , 23F
01/15 19:29, 23F
→
01/15 19:30, , 24F
01/15 19:30, 24F
→
01/16 00:56, , 25F
01/16 00:56, 25F
→
01/16 01:35, , 26F
01/16 01:35, 26F
→
01/16 01:36, , 27F
01/16 01:36, 27F
→
01/16 01:37, , 28F
01/16 01:37, 28F
→
01/16 01:39, , 29F
01/16 01:39, 29F
※ 編輯: QQ29 來自: 123.192.73.81 (01/16 01:39)
→
01/16 01:40, , 30F
01/16 01:40, 30F
→
01/16 01:40, , 31F
01/16 01:40, 31F
→
01/16 01:42, , 32F
01/16 01:42, 32F
→
01/17 04:18, , 33F
01/17 04:18, 33F
→
01/17 10:53, , 34F
01/17 10:53, 34F
→
01/17 10:53, , 35F
01/17 10:53, 35F
→
01/17 10:53, , 36F
01/17 10:53, 36F
→
01/17 15:56, , 37F
01/17 15:56, 37F
→
01/17 15:56, , 38F
01/17 15:56, 38F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章