二、C++类和对象

C++面向对象的三大特征封装继承多态

C++可以把任何一样东西用对象(属性和行为)表示出来,如果具有相同性质也可以抽象为类。

例如:小狗作为对象,属性有颜色,大小,品种等,行为有跑、吃、坐等等。

1.1封装

封装的意义:

1、将行为和属性作为一个整体,表现生活中的事物(行为在类中也叫成员函数,属性在类中叫成员变量)

   语法:class  类名 {     访问权限:   属性   /    行为};

2、将属性和行为加以权限控制

  权限:

public公有:类内可以访问,类外可以访问

protected保护:类内可以访问,类外不可以访问

private私有:类内可以访问,类外不可以访问

示例1

#include
#include
using namespace std;
class person
{
//成员变量(属性)
public:
    string m_name;    //公有姓名
protected:
    string m_car;     //保护车
private:
    int m_passwaord;   //私有密码

public:
    void func()        //共有函数
    {
         m_name = "keke";
         m_car = "雅迪";
         m_password = 20250626;
    }
};
int main(){
    person p;
    p.m_name ="lele";
    //p.m_car ="奥迪";   //保护权限类外无法访问
    //p.passwoed = 2025; //私有权限类外访问不到
    return 0;
}

1.2构造函数和析构函数

构造函数:创建对象时对成员属性进行初始化 ,可以重载     语法:类名(){}

析构函数:用于在对象销毁前执行清理工作 ,不可重载         语法:~类名(){}

这两个函数无需手动调用,,编译器自动调用,只会调用一次

1.3拷贝构造函数

能够通过已存在的对象初始化该类的另一个对象

class 类名
{
public:
    构造函数名称(const 类名& 对象名)
    {
        函数体
    }
    ...
    ...    //其他成员变量
};

1.4浅拷贝和深拷贝

浅拷贝:简单的赋值拷贝操作

深拷贝:当类中有指针成员时,在堆区重新申请空间,将数据复制到新空间

1.5cons和static

static:在成员变量和成员函数前加上static,称为静态成员

1、静态成员变量

所有对象共享同一份数据

在编译阶段分配内存

类内声明,类外初始化

2、静态成员函数

所有对象共享同一个函数

静态成员函数只能访问静态成员变量

const:修饰成员函数

成员函数后加const成为常函数,常函数里的成员变量不可以修改,成员属性声明时加mutable,在常函数中依然可以修改

声明对象前加const称为常对象,只能调用常函数

1.6友元

让一个函数或者类访问另一个类中的私有成员     关键字“friend”

你可能感兴趣的:(c++,开发语言)