关于C++复制构造函数和复制初始化的有关问题

关于C++复制构造函数和复制初始化的问题
问题起源是C++primer上的一句话:复制初始化首先使用指定的构造函数创建一个临时对象,然后用复制构造函数将那个临时对象复制到正在创建的对象。

先是定义了一个Employee类
Employee.h中
#include <iostream>
#include <string>
class Employee
{
public:
Employee(std::string str = "NoName") :name(str), id(++cnt){ std::cout << "construcot" << std::endl; };
Employee(const Employee&obj) :name(obj.name), id(++cnt){ std::cout << "copy constructor" << std::endl; };//复制构造函数
Employee& operator=(const Employee&rhs){ name = rhs.name; std::cout << "assignment operator" << std::endl; return *this; }
~Employee();
private:
std::string name;
int id;
static int cnt;
};
Employee.cpp中
#include "stdafx.h"
#include "Employee.h"
int Employee::cnt = 0;//id从1开始

并在main函数中
使用复制初始化Employee e1=“张三”;
发现输出是constuctor,也就是并没有调用复制构造函数。
而当我把复制构造函数注释掉时,又没法使用复制初始化。这是为什么呢?求解答。
书上原例
string null_book="9-999-99999-9";//copy initialization

------解决思路----------------------
Employee e1=“张三”; 不是你说的复制初始化(即operator=),而是调用了构造函数Employee(std::string) 。有=的地方不一定就是赋值。