复制构造函数未能输出正确结果
//main.c #include <iostream> #include "Teacher.h" #include "stdlib.h" using namespace std; int main(void) { Teacher t1; cout<< t1.getName()<<" "<<t1.getAge()<< endl; Teacher t2("Marry",12); cout << t2.getName() << " " << t2.getAge() << endl; Teacher t3("King", 35, 120 ); cout << t3.getName() << " " << t3.getAge() <<" "<<t3.getMax()<< endl; Teacher t4=t3; cout << t4.getName() << " " << t4.getAge() << " " << t4.getMax() << endl; system("pause"); return 0; } //Teacher.h #include "string" #include <iostream> using namespace std; class Teacher { public: //Teacher(string name = "Jim", int age = 30); //Teacher(); Teacher(string name="Jim", int age=30, int m=120); Teacher(const Teacher &); //Teacher(Teacher &t); void setName(string name); string getName(); void setAge(int age); int getAge(); int getMax(); private: string m_strName; int m_iAge; int m_iMax; }; //Teacher.c #include "Teacher.h" //using namespace std; //使用初始化列表 Teacher::Teacher(string name, int age, int m) : m_strName(name), m_iAge(age), m_iMax(m) { //m_iMax = m; cout << "Teacher(string name, int age, int m)"<< endl; // m_strName = name; // m_iAge = age; } // 构造函数的一般初始化 // Teacher::Teacher(string name, int age, int m) // { // cout << "Teacher(string name, int age)" << endl; // m_iMax = m; // m_strName = name; // m_iAge = age; // } Teacher::Teacher(const Teacher &) { cout <<"Teacher(const Teacher &)" << endl; } int Teacher::getMax() { return m_iMax; } void Teacher::setName(string name) { m_strName = name; } string Teacher::getName() { return m_strName; } void Teacher::setAge(int age) { m_iAge = age; } int Teacher::getAge() { return m_iAge; }
为什么对象t4的输出与对象t3不同呢?