返回目录 1 面向对象技术
上一节 1.4 cpp编程基础
下一节 1.6 cpp的常见特性ios
/* struct.cpp 结构体实例 */ #include <iostream> #include <string> struct Student { std::string name; // 姓名 std::string sex; // 性别 int age; // 年龄 }typedef Student; void STUDENT_dispalyInfos(Student student) { /* 这个函数用来显示学生信息 */ std::cout << "学生信息" << std::endl; std::cout << "姓名:" << student.name << std::endl; std::cout << "性别:" << student.sex << std::endl; std::cout << "年龄:" << student.age << std::endl; } int main() { Student XiaoMing; XiaoMing.name = "小明"; XiaoMing.sex = "男"; XiaoMing.age = 18; STUDENT_dispalyInfos(XiaoMing); return 0; }
学生信息 姓名:小明 性别:男 年龄:18
/* class.cpp 类实例 */ #include <iostream> #include <string> class Student { private: std::string name; // 姓名 std::string sex; // 性别 int age; // 年龄 public: Student(); // 这是构造函数 Student(std::string name, std::string sex, int age); // 构造函数重载 ~Student(); // 析构函数 void Init(std::string name, std::string sex, int age); // 初始化函数 void displayInfos(); // 显示成员信息的函数 }; Student::Student() { std::cout << "-++类实例化时,会先调用构造函数" << std::endl; this->name = ""; this->sex = ""; this->age = 0; std::cout << "+++" << name << "初始化完成" << std::endl; } Student::Student(std::string name, std::string sex, int age) { std::cout << "-++类实例化时,会先调用构造函数" << std::endl; this->name = ""; this->sex = ""; this->age = 0; std::cout << "+++" << name << "初始化完成" << std::endl; Init(name, sex, age); } Student::~Student() { std::cout << "-++对象销毁时,会调用析构函数" << std::endl; std::cout << "+++" << this->name << "已销毁" << std::endl; } void Student::displayInfos() { std::cout << "————学生信息————" << std::endl; std::cout << "——姓名:" << this->name << std::endl; std::cout << "——性别:" << this->sex << std::endl; std::cout << "——年龄:" << this->age << std::endl; std::cout << "————————————" << std::endl; } void Student::Init(std::string name, std::string sex, int age) { std::cout << "--+" << name << "完成初始化" << std::endl; this->name = name; this->sex = sex; this->age = age; } int main() { Student XiaoMing; // 类实例化时调用无参的构造函数 XiaoMing.Init("小明", "男", 20); // 手动调用初始化函数 Student XiaoHong("小红", "女", 20); // 类实例化时调用有参的构造函数,直接初始化完成 XiaoMing.displayInfos(); // 显示信息 XiaoHong.displayInfos(); return 0; }
-++类实例化时,会先调用构造函数 +++初始化完成 --+小明完成初始化 -++类实例化时,会先调用构造函数 +++小红初始化完成 --+小红完成初始化 ————学生信息———— ——姓名:小明 ——性别:男 ——年龄:20 ———————————— ————学生信息———— ——姓名:小红 ——性别:女 ——年龄:20 ———————————— -++对象销毁时,会调用析构函数 +++小红已销毁 -++对象销毁时,会调用析构函数 +++小明已销毁
能够看到,结构体与类有很大的类似之处,可是类内部容许有函数,而且有默认的构造函数(在类实例化时自动运行,能够重载)和默认的析构函数(对象生命周期结束时自动运行,回收资源)。c++
最早构造的对象,最后被析构。编程
类能够当作是一个独立的小程序,做为整个项目的基本机器存在着,咱们通常会尽可能少在main函数写大量的代码,而是集中到类或者函数中,直接在main函数中调用它们便可。小程序
this直接指向实例化的对象对应的类中成员,在这个例子中用于和传入的外界参数与对象的数据成员区分开来。segmentfault
返回目录 1 面向对象技术
上一节 1.4 cpp编程基础
下一节 1.6 cpp的常见特性函数
参考资料:this