C++11新特性 变参模板、完美转发和emplace

#include 
#include 
#include 
#include 
#include 
using namespace std;

class student {
public:
	student() {
		cout << "无参构造函数被调用!" << endl;
	}

	student(int age, string name) {
		this->age = age;
		//strncpy_s(this->name, name, 64);
		cout << "有参构造函数被调用!" << endl;
		cout << "姓名:" << name.c_str() << " 年龄:" << age << endl;
	}

	student(const student& s) {
		this->age = s.age;
		//strncpy_s(this->name, s.name, 64);

		cout << "拷贝构造函数被调用!" << endl;
	}

	~student() {
		cout << "析构函数被调用" << endl;
	}
public:
	int age;
	string name;
};

int main(void)
{
	vector vectStu;
	//插入学生到容器中  先定义再插入
	student xiaohua(10, "李晓华");
	vectStu.push_back(xiaohua);
	return 0;

}

这样写代码 再插入调用

...

int main(void)
{
	vector vectStu;
	//直接插入临时对象
	vectStu.push_back(student(19, "王大锤"));
	return 0;

}

直接插入临时对象 C++11新特性 变参模板、完美转发和emplace_第1张图片

两种方法都进行了拷贝,效率较低。所以c++11提供了变参模板和完美转发

int main(void)
{
	vector vectStu;
	//变参模板和完美转发
	vectStu.emplace_back(19,"王大锤");
	return 0;

}

你可能感兴趣的:(c++)