如果用的是内置的vector
或者string
,当使用=
对类的对象进行赋值时,内部自己会完成类成员的一一赋值。
代码
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class testA
{
private:
std::vector<int> _av;
std::string _name;
public:
testA() = default;
testA(std::vector<int>& vec, std::string& name) :_av(vec), _name(name) {}
testA add()
{
testA b = *this; // 这里直接对对象赋值
return b;
}
std::vector<int>& getVector() { return _av; }
std::string& getName() { return _name; }
};
int main()
{
std::vector<int> a{ 1,2,3,100 };
std::string aName("A");
testA ao(a, aName);
testA b = ao.add();
std::vector<int> bv = b.getVector();
for (const auto& num : bv) {
cout << num << " ";
}// 可以发现内部完成了vector数组的一一赋值
cout << endl;
cout << b.getName() << endl;
return 0;
}