C++面向对象的三大特性:封装、继承、多态
一、封装
封装的意义:将属性和行为作为一个整体,表现生活中的事物
将属性和行为加以权限控制
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 // 创建学生类 6 class Student { 7 8 public: // 公共权限 9 string name; 10 int studentNumber; 11 12 void showStudent() 13 { 14 cout << "学生的姓名: " << name << endl; 15 cout << "学生的学号: " << studentNumber << endl; 16 } 17 }; 18 19 int main() 20 { 21 Student stu; 22 23 stu.name = "高鹏"; 24 stu.studentNumber = 10000; 25 26 stu.showStudent(); 27 28 system("pause"); 29 return 0; 30 }
访问权限有三种:public 公共权限 → 类内可以访问,类外可以访问、protected 保护权限 → 类内可以访问,类外不可以访问、private 私有权限 → 类内可以访问,类外不可以访问
struct 和 class 的区别:
在 C++ 中 struct 和 class 唯一的区别就在于 默认的访问权限不同
区别:struct 默认权限为公共、 class 默认权限为私有
二、对象的初始化和清理
1、 构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用
构造函数语法:类名(){}
构造函数没有返回值不写void;函数名与类名相同;构造函数可以有参数,因此可以重载;程序会自动调用构造,且只调用一次;
析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工作
析构函数语法:~类名(){}
析构函数没有返回值不写void;函数名与类名相同,且在类名前加 ~;析构函数不可以有参数,不会有重载;程序在销毁前会自动调用析构,且只会调用一次
2、构造函数的分类及调用:
按参数分:有参构造和无参构造
按类型分:普通构造和拷贝构造
3、拷贝构造函数调用时机
C++中拷贝构造函数调用时机通常有三种情况
使用一个已经创建完毕的对象来初始化一个新对象
值传递的方式给函数参数传值
以值方式返回局部对象
4、构造函数调用规则
默认情况下,c++ 编译器至少给一个类添加3个函数
1、默认构造函数(无参,函数体为空)
2、默认析构函数(无参,函数体为空)
3、默认拷贝构造函数,对属性进行值拷贝