C++:在vector中放自己定义的类,对类有何要求?
我定义了一个类,存储一些数据,然后把这个类存放到vector中,对这个类有什么要求吗?看书上说的是类必须有默认的构造函数,可是类应该都有默认的构造函数啊?(我是菜鸟,很有可能说的不对。。。)该怎么做呢,大神们帮帮忙吧。
[解决办法]
要有拷贝构造函数吧
如果类比较大,还是放指针吧
[解决办法]
拷贝构造函数,赋值操作符,
[解决办法]
拷贝构造函数,赋值操作符,析构函数,只要一个不用默认的,就要一起自定义
[解决办法]
类一旦存在拷贝构造,深拷贝还是浅拷贝都很有讲究,各有优缺点,搞不好好有可能误用
[解决办法]
- C/C++ code
#include<iostream>#include<vector>class myInt{public: myInt():m_li(0),m_ri(0) {} ~myInt(){} const myInt& operator=(const myInt& _tmp) { this->m_li = _tmp.m_li; this->m_ri = _tmp.m_ri; return *this; } void print() { std::cout<<"m_li = "<<this->m_li<<std::endl; std::cout<<"m_ri = "<<this->m_ri<<std::endl; } void set(int li, int ri) { this->m_li = li; this->m_ri = ri; }private: int m_li; int m_ri;};//typedef vector<myInt> MYINT;int main(){ myInt c1; myInt c2; myInt c3; c1.set(1,1); c2.set(2,2); c3.set(3,3); std::vector<myInt> v1; v1.push_back(c1); v1.push_back(c2); v1.push_back(c3); for(std::vector<myInt>::iterator iter = v1.begin(); iter != v1.end(); iter++) { iter->print(); } v1.clear(); return 0;}