没腿的鸟 发表于 2024-7-25 02:02:51

c++学习笔记(四)

目录

[*]类 & 对象

[*]封装

[*]访问权限

[*]类的构造函数&析构函数

[*]构造函数的分类及调用

[*]拷贝构造函数的调用时机
[*]构造函数调用规则

[*]深拷贝与浅拷贝
[*]初始化列表
[*]类对象作为类成员
[*]静态成员

[*]C++对象模型和this指针

[*]成员变量和成员函数分开存储
[*]this指针概念
[*]空指针访问成员函数
[*]const修饰成员函数

[*]友元

[*]全局函数做友元
[*]类做友元
[*]成员函数做友元

[*]运算符重载

[*]加号运算符重载
[*]左移运算符重载
[*]递增 / 递减运算符重载
[*]赋值运算符重载
[*]关系运算符重载
[*]函数调用运算符重载

[*]继续

[*]根本语法
[*]继续方式
[*]构造和析构顺序
[*]继续同名成员处理方式
[*]多继续
[*]菱形继续

[*]多态

[*]多态的根本概念
[*]多态案例(一)——计算器类
[*]纯虚函数和抽象类
[*]多态案例(二)——饮品类
[*]虚析构和纯虚析构
[*]多态案例(三)—— 电脑组装



类 & 对象

c++面向对象的三大特征为:封装、继续、多态
封装

封装的意义:

[*]将属性和行为作为一个整体,体现生活中的事物(数据成员和方法)
[*]将属性和行为加以权限控制(访问修饰符)
类中的属性和行为我们一般称为成员,属性为成员属性,行为是成员方法
https://www.runoob.com/wp-content/uploads/2015/05/cpp-classes-objects-2020-12-10-11.png
这里以盒子为例,定义一个类,并声明两个对象
class Box
{
    //访问权限
    //公共权限
    public:
    //数据成员
            double lenth;        //长
            double breadth; //宽
            double height;//高
    //方法
    //求盒子体积
            double cal_Volume()
      {
            return lenth * breadth * height;
      }
};

int main()
{
    Box box1;        // 声明 box1,类型为 Box
    Box box2;        // 声明 box2,类型为 Box
    //对象box1和box2都有他们各自的成员
}访问权限

类在计划时,可以把属性和行为放在差别的权限下来加以控制
访问权限有三种:

[*]public                       公共权限
其成员类内可以访问,类外可以访问
[*]protected                  保护权限
其成员类内可以访问,类外不可以访问,但在子类(派生类)中可以访问
[*]private(默认)        私有权限
其成员类内可以访问,类外不可以访问,不可查看
class Person
{
    public:
            String name;
   
    protected:
            int age;
   
    int id_card;//默认为private
   
    public:
            func()
      {
            name = "alen";
            age = 26;
            id_card = 114514;
      }
};

int main()
{
    Person p;
    p.name = "walker";
    p.age = 23;//报错,类外不能访问
    p.id_card = 1919810;//报错,类外不能访问
}struct和class区别
两者的唯一区别在于默认的访问权限:

[*]struct默认权限为公共
[*]class默认权限为私有
[*]class C1
{
    int a;//默认是私有权限 private
};

struct C2
{
    int a;//默认是公共权限 public
};成员属性设置为私有
优点:

[*]将所有成员属性设置为私有,可以自己控制读写权限
[*]对于写权限,我们可以检测数据的有效性

class Person{    public:            //设置名字            void setName(string name)      {            m_Name = name;      }                      //设置偶像            void setIdol(string idol)      {            m_Idol = idol;      }              //设置年事            void setAge(int age)      {            if (age < 0 || age > 150)            {                cout
页: [1]
查看完整版本: c++学习笔记(四)