🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
``` #include <stdlib.h> #include <string> * /** * 对象结构 * * 内存分区 * * 栈区: * int x=0; int *p=NULL * 系统自动释放内存 * * 堆区: * int *p=new int[20] * 需要自己释放内存 delete p []p p=NULL * * 全局区: * 存储全局变量及静态变量 * * 常量区: * string str="hello"; * * 代码区: * 存储编译后的二进制逻辑代码 * * * 对象初始化(分两种) * 有且仅有一次 * 根据条件初始化 * * 思考:初始化函数如何避免误操作 * 忘记调用了初始化函数 * 重复调用了初始化函数 * * 构造函数的规则和特点 * 构造函数在对象实例化时被自动调用 * 构造函数与类同名 * 构造函数没有返回值 * 构造函数可以有多人重载形式 * 当用户没有定义构造函数时,编译器自动生成一个构造函数,但这构造函数是空的,什么都不做 * * * */ class Car{ private: int wheelCount; public: int getWheelCount(){ return wheelCount; } }; class Tank{ private: int m_int_posX; int m_int_posY; public: //初始化 void init(){ m_int_posX=0; m_int_posY=0; } }; /** * 构造函数 * @return */ class Student{ public: // 无参构造函数 Student(){ m_str_name="jim"; }; // 有参构造函数 Student(string _name){ m_str_name=_name; }; private: string m_str_name; }; int main(){ Tank t1; t1.init(); Tank t2; t2.init(); return 0; } ``` ***** 代码示例: 1.`Teacher.h`代码 ``` #include <string> using namespace std; class Teacher{ public: // 无参构造函数 Teacher(); // 带参构造函数及参数可附默认值 Teacher(string _name,int _age=23); //设置名字 void setName(string _name); //获取名字 string getName(); //设置性别 void setGender(string _gender); //获取性别 string getGender(); //设置年龄 void setAage(int _age); //获取年龄 int getAage(); //教学 void teach(); private: //变量:名字 string m_str_name; //变量:性别 string m_str_gender; //变量:年龄 int m_int_age; }; ``` ***** 2.`Teacher.cpp`代码 ``` #include "Teacher.h" #include <iostream> using namespace std; Teacher::Teacher() { m_str_name="Jim"; m_int_age=5; cout<<"Teacher()"<<endl; } Teacher::Teacher(string _name, int _age) { m_str_name=_name; m_int_age=_age; cout<<"Teacher(string _name, int _age)"<<endl; } void Teacher::setName(string _name) { m_str_name=_name; } string Teacher::getName() { return m_str_name; } void Teacher::setGender(string _gender) { m_str_gender=_gender; } string Teacher::getGender() { return m_str_gender; } void Teacher::setAage(int _age) { m_int_age=_age; } int Teacher::getAage() { return m_int_age; } void Teacher::teach() { cout<<" 现在正在上课"<<endl; } ``` ***** 3.`main.cpp`代码 ``` #include <iostream> #include <stdlib.h> #include "Teacher.h" using namespace std; /** * 定义一个Teacher类,要求分别采用同文件类外定义和分文件类外定义 * 的方式完成,具体要求如下: * 数据成员: * 名字 * 年龄 * 性别 * 成员方法 * 数据成员的封装函数 * 授课teach * */ //class Teacher{ // public: // //设置名字 // void setName(string _name); // //获取名字 // string getName(); // //设置性别 // void setGender(string _gender); // //获取性别 // string getGender(); // //设置年龄 // void setAage(int _age); // //获取年龄 // int getAage(); // //教学 // void teach(); // // private: // //变量:名字 // string m_str_name; // //变量:性别 // string m_str_gender; // //变量:年龄 // int m_int_age; //}; //void Teacher::setName(string _name) { // m_str_name=_name; //} // //string Teacher::getName() { // return m_str_name; //} // //void Teacher::setGender(string _gender) { // m_str_gender=_gender; //} // //string Teacher::getGender() { // return m_str_gender; //} // //void Teacher::setAage(int _age) { // m_int_age=_age; //} // //int Teacher::getAage() { // return m_int_age; //} // //void Teacher::teach() { // cout<<" 现在正在上课"<<endl; //} int main(){ // Teacher t; // t.setName("孔乙已"); // t.setGender("男"); // t.setAage(35); // cout<<t.getName()<<" "<<t.getAage()<<" "<<t.getGender(); // t.teach(); Teacher t1; Teacher t2("Jack",20); Teacher t3("James"); cout<<t1.getName()<<" "<<t1.getAage()<<endl; cout<<t2.getName()<<" "<<t2.getAage()<<endl; cout<<t3.getName()<<" "<<t3.getAage()<<endl; return 0; } ```