目录
一、封装与访问控制
二、构造函数与析构函数
三、 拷贝构造函数
一、封装与访问控制
1、封装的优势:
1)隐藏实现细节,提供公共的访问方式;
2)提高了代码的复用性;
3)提高了安全性。
2、分别分析private public protected的作用
private修饰的内容只能在本类中访问。
public修饰的内容是公共的,谁都可用访问。
protected表示受保护的权限,继承中用的比较多。子类能够访问父类中的内容
代码实现
#includeusing namespace std; class Student{ private: string m_name; int m_age; int m_id; public: void setName(string name) { m_name=name; } string getName() { return m_name; } void setAge(int age) { m_age=age; } int getAge() { return m_age; } void setId(int id) { m_id=id; } int getId() { return m_id; } }; int main() { Student s; s.setName("zhangsan"); s.setAge(34); s.setId(012); cout<<"姓名:"< 运行结果为:
二、构造函数与析构函数
1、构造函数:在创建对象时为对象的成员进行初始化;
1)构造函数名和类名相同
2)没有返回值,不用写void
3)允许多个参数,可以重载
2、析构函数:在对象销毁前,执行一些清理工作 ;
1)析构函数名和类名相同,前面加上~
2)没有返回值,不用写void
3)不允许多个参数,无参的,不可以重载
注意:
构造函数和析构函数由编译器自动调用一次,无需手动调用。
如果没有提供构造函数,编译器会自动提供一个无参的空实现的构造函数。
如果没有提供析构函数,编译器会自动提供一个无参的空实现的析构函数。#includeusing namespace std; class Student{ public: string m_name; int m_age; Student(){ m_name=""; m_age=0; cout<<"无参的构造函数执行了..."< 这个是定义无参函数的:
这个没有定义无参函数的:
另外:通过输出可以看出,定义多少个构造函数,就会输出多少个析构函数
三、 拷贝构造函数
构造函数分类:
1、按照有无参数:有参构造和无参构造(默认)
2、按照类型分类:拷贝构造和普通构造
如果我们提供了构造函数,系统将不再提供无参的构造函数
拷贝构造函数的调用方式:显示调用和隐式调用
#includeusing namespace std; class Student{ public: string m_name; int m_age; Student(){ m_name=""; m_age=0; cout<<"无参的构造函数执行了..."< 输出结果:



