C++面向对象的三大特征:封装、继承、多态
C++认为万事万物皆为对象,对象上有其属性和行为。
封装是C++面向对象三大特性之一;
封装的意义:
语法:class 类名 { 权限控制: 属性 / 行为 }
访问权限有三种:
在c++中struct和class唯一的区别就在于默认的访问权限不同
区别:
优点:
示例:
#include
using namespace std;
#include
class Student{
private:
string m_name;
public:
void setName(string name) {
m_name = name;
}
string getName() {
return m_name;
}
};
int main(){
Student s;
s.setName("lxf");
cout << s.getName() << endl;
system("pause");
return 0;
}
如果我们不提供构造和析构,编译器会提供默认的空实现构造和析构
主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无须手动调用
构造函数语法:类名(){ }
例如:
// 初始化列表
Persono(int a, int b, int c) : m_a(a),m_b(b),m_c(c){
}
浅拷贝:简单的赋值拷贝操作
浅拷贝可能会带来一些问题,比如: 堆区的内存重复释放
深拷贝:在堆区重新申请空间,进行拷贝操作
浅拷贝带来的"堆区内内存重复释放"的问题,可以使用深拷贝来解决;
手动写深拷贝,重新在堆区申请内存
主要作用在于对象销毁前自动调用,执行一些清理操作
析构函数语法:~类名(){ }
静态成员就是在变量和成员前面加上 static 关键字
静态成员分为: