#include "stdafx.h"
#include "stdio.h"
#include "Windows.h"
#include "iostream"
using namespace std;
#define Num 10000000    // 一千万
class Student
{
private:
string m_strName;
int    m_iAge;
public:
Student(string strName, int iAge)
{
m_strName = strName;    // 赋值
m_iAge = iAge;
}
~Student(){}
};
class Teacher
{
private:
string m_strName;
int    m_iAge;
public:
Teacher(string strName, int iAge):m_strName(strName),m_iAge(iAge)
{
// 初始化
}
~Teacher(){}
};
int _tmain(int argc, _TCHAR* argv[])
{
int iStartTime = 0;
int iDuration = 0;
iStartTime = GetTickCount();
for(int i=0;i<Num;++i)
{
Student stu1("xiaoming",15);
}
iDuration = GetTickCount()-iStartTime;
printf("\nStudent Init Duration:%d\n",iDuration);
iStartTime = GetTickCount();
for(int i=0;i<Num;++i)
{
Teacher tech1("xiaoming",15);
}
iDuration = GetTickCount()-iStartTime;
printf("Teacher Init Duration:%d\n",iDuration);
getchar();
return 0;
}

输出为:

Student Init Duration:6459
Teacher Init Duration:5912

 

由于赋值首先调用default函数赋初值,然后立刻再对它们赋予新值,default构造函数所做的一切就浪费了。

初始化列表的做法避免了这一问题,所以效率更高。