C++11新特性 变参模板、完美转发和emplace
- 变参模板 - 使得 emplace 可以接受任意参数,这样就可以适用于任意对象的构建
- 完美转发 - 使得接收下来的参数 能够原样的传递给对象的构造函数,这带来另一个方便性
#include <iostream>
#include <list>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
class Demo {
public:
Demo() {
cout << "无参构造函数被调用!" << endl;
}
Demo(int age, const string name) {
this->age = age;
this->name = name;
cout << "有参构造函数被调用!" << endl;
}
void description() const {
cout << "姓名:" << name << " 年龄:" << age << endl;
}
Demo(const Demo& s) {
this->age = s.age;
cout << "拷贝构造函数被调用!" << endl;
}
~Demo() {
cout << "析构函数被调用" << endl;
}
public:
int age;
string name;
};
int main(void) {
list<Demo> d1;
d1.emplace_back(18, "张三");
d1.emplace(d1.end(), 19, "李四");
d1.emplace_front(20, "王五");
for (auto it = d1.begin(); it != d1.end(); it++) {
(*it).description();
}
system("pause");
return 0;
}