构造函数的规则和特点:
1.构造函数在对象实例化时被自动调用
2.构造函数与类同名
3.构造函数没有返回值,不用写类型
4.构造函数可以有多个重载形式
5.实例化对象时仅用到一个构造函数
6.当用户没有定义构造函数时,编译器自动生成一个构造函数。
构造函数的参数不能随意的赋给 特别是不能和无参数的构造函数和全部赋予初值的构造函数同时使用
Teacher.h
#include<string>
#include<iostream>
using namespace std;
class Teacher
{
public:
Teacher();
Teacher(string _name,int _age=25);
void teach();
void setName(string _name);
string getName();
void setGender(string _gender);
string getGender();
void setAge(int _age);
int getAge();
private:
string m_strName;
string m_strGender;
int m_iAge;
};
Teacher.cpp
#include"Teacher.h"
using namespace std;
/*定义一个Teacher类:
自定义无参构造函数
自定义有参构造函数
数据成员:
名字
性别
年龄
成员函数:
数据成员的封装函数
授课teach
*/
Teacher::Teacher()
{
m_strName="jin";
m_iAge=19;
cout<<"Teacher"<<endl;
}
Teacher::Teacher(string _name,int _age)
{
m_strName=_name;
m_iAge=_age;
cout<<"Teacher(string _name,int _age)"<<endl;
}
void Teacher::teach()
{
cout<<"现在上课"<<endl;
}
void Teacher::setName(string _name)
{
m_strName=_name;
}
string Teacher::getName()
{
return m_strName;
}
void Teacher::setGender(string _gender)
{
m_strGender=_gender;
}
string Teacher::getGender()
{
return m_strGender;
}
void Teacher::setAge(int _age)
{
m_iAge=_age;
}
int Teacher::getAge()
{
return m_iAge;
}
int main()
{
Teacher t1;
Teacher t2("sam",22);
Teacher t3("mery");
cout<<t1.getName()<<","<<t1.getAge()<<endl;
cout<<t2.getName()<<","<<t2.getAge()<<endl;
cout<<t3.getName()<<","<<t3.getAge()<<endl;
return 0;
}
Teacher
Teacher(string _name,int _age)
Teacher(string _name,int _age)
jin,19
sam,22
mery,25