为了账号安全,请及时绑定邮箱和手机立即绑定

复制构造函数未能输出正确结果

//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;

}

http://img1.sycdn.imooc.com//593cd3820001208109930519.jpg

为什么对象t4的输出与对象t3不同呢?

正在回答

1 回答

拷贝初始化的函数没有定义

Teacher::Teacher(const Teacher &t)

{

    cout <<"Teacher(const Teacher &)" << endl;

         m_iMax = t.getMax()

         m_strName = t.getName()

         m_iAge = t.getAge()

}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103410    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

复制构造函数未能输出正确结果

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信