C++类&对象

目录

1 类

1.1 外观上(特征):

1.2 言行举止(行为):

1.3 程序描述

2 对象

2.1 实例化的两种方式

2.1.1 在栈区进行实例化

2.1.2 在堆区进行实例化

3 如何访问类的成员

3.1 对象在栈区实例化

3.2 对象在堆区实例化

4 类的成员访问修饰符

4.1 public修饰符

4.2 private修饰符

4.3 protected修饰符

5 类的构造函数

6 类的成员变量初始化方式

6.1 类的对象进行初始化

6.2类的构造函数中初始化

6.3 通过类的构造函数的初始化列表的形式

7 类的析构函数

8 友元

8.1 友元函数

8.2 友元类

9 this指针

10 static关键字

10.1 static声明成员变量

10.2 static声明静态成员函数

10.3 类的静态成员访问方式

11 const关键字


1 类

        类是描述一类事物的特征和行为的统称,抽象的不存在的,泛指的概念,例如:描述一个人,从外观上(特征)和言行举止(行为)上进行描述

1.1 外观上(特征):

        长头发
        蓝牙眼睛
        白皮肤
        带了美瞳
        年龄多大
        身高
        体重
        .....

1.2 言行举止(行为):

        走路
        跑步
        说话
        学习
        打游戏
        .......

1.3 程序描述

关键字:class   -------描述一个类
格式:
    class    类名
    {
        //外观---特征
        长头发
        蓝牙眼睛
        白皮肤
        带了美瞳
        年龄多大
        身高
        体重
        .....
        //言行举止----行为
        走路
        跑步
        说话
        学习
        打游戏
        .......
    };

例如:
    class   People
    {
        //特征
        int  eyes;
        int age;
        int height;
        int weight;
        char name[20];
        .....
        //行为
        void walk()
        {}
        void run()
        {}
        void play()
        {}
        void study()
        {}
        ..........
    };
特征(属性):
    指的是变量,称为类的成员变量
行为(方法):
    指的是函数,称为类的成员函数
类的成员:
    包含了成员变量和成员函数

2 对象

是指类的实例化(实实在在存在的),是特指的概念,例如:人类实例化对象张三、李四、王二等等

2.1 实例化的两种方式

2.1.1 在栈区进行实例化

相当于一个局部变量,只能在对应作用域使用。

格式:
    类名   对象名  ;  //类名和对象名就是标识符,满足语法规范
例如:
    People  zhangsan ; //实例化zhangsan对象
    People  lisi;
    ......

2.1.2 在堆区进行实例化

格式:
    类名   *   对象名  =  new  类名;//在堆区开辟类大小的空间,并用对象指向该空间
例如:
    People  * zhangsan = new People ;
    People  * lisi = new People ;  //注意释放空间:delete zhangsan

3 如何访问类的成员

        通过类的对象去进行访问

3.1 对象在栈区实例化

符号:“.”
格式:
    对象名  .    成员 ;  //访问类的成员
例如:
    zhangsan.height=180;
    zhangsan.walk();

3.2 对象在堆区实例化

符号:“->”
格式:
    对象名 ->  成员 ;//访问类的成员
例如:
    zhangsan->height=180;
    zhangsan->walk();

4 类的成员访问修饰符

        C++提供了三个类的成员修饰符,public(共有)、private(私有)、protected(受保护的),作用是保护类的成员。

4.1 public修饰符

    一定要存在于类中
格式:
    public:
        类的成员
注:
    如果类中有其它类的成员修饰符,直到遇到下一个修饰符之前(类的后括号之前)的成员,都是用public修饰
    对于public修饰的成员:
        在类的外部可以访问
        在类的内部可以访问
        对于派生类可以访问
        对于友元可以访问

4.2 private修饰符

格式:
    private:
        类的成员
注:
    如果类中有其它类的成员修饰符,直到遇到下一个修饰符之前(类的后括号之前)的成员,都是用private修饰
    对于private修饰的成员:
        在类的外部不可以访问
        在类的内部是可以访问
        对于派生类不可以访问
        对于友元可以访问

4.3 protected修饰符

格式:
    protected:
        类的成员
注:
    如果类中有其它类的成员修饰符,直到遇到下一个修饰符之前(类的后括号之前)的成员,都是用private修饰
    对于protected修饰的成员:
        在类的外部不可以访问
        在类的内部是可以访问
        对于派生类可以访问
        对于友元可以访问
注:
    如果类中的成员没有加任何的修饰符,那么该成员默认是类的私有成员
    一般是将类的成员变量放置在private修饰符下(具体情况具体分析)

5 类的构造函数

构造函数的作用是用于构造(创建)对象,是一种特殊的函数,如果用户没有显示的写出构造函数,那么编译器会自动生成一个隐式的不带参的构造函数;如果用户显示的写出构造函数,那么编译器不会自动生成隐式的构造函数。创建对象时会自动调用构造函数(才表示对象创建成功)
构造函数的格式:
    类名 (参数列表)
    {
        //代码
    }
例如:
    People()
    {
        //代码
    }

注:
    创建对象时,要参考构造函数是否带参,如果带参那么创建对象时就需要传递实参
    格式:
        类名  对象名(实参列表);
    例如:
        People  people(10);

    总结:
        (1)构造函数可以发生重载
        (2)构造函数没有返回值
        (3)构造函数的作用是用于构造对象,还可以初始化类的成员变量

6 类的成员变量初始化方式

6.1 类的对象进行初始化

例如:
    People people;
    people.num=10; 

6.2类的构造函数中初始化

例如:
    People(int  a)
    {
        num=a;   //用a来初始化类的成员num
    }

6.3 通过类的构造函数的初始化列表的形式

格式:
    类名 ([参数列表]):成员变量1(初始值),成员变量2(初始值),.......
    {
        //代码
    }
例如:
    People():num(10)  //创建对象时,对类的成员变量num进行初始化为10
    {

    }

注:
    构造函数的调用方式:
        (1)实例化对象的方式调用----构造函数的隐式调用
        (2)直接通过类方式调用-----构造函数的显示调用
            格式:
                类名([实参列表]);
            例如:
                People(10);//构造函数的显示调用

7 类的析构函数

        析构函数的作用是用于释放该类所占用的资源(释放对象),在类的对象使用完时(当类的对象超出了作用域),会自动调用析构函数;如果是在堆区实例化的对象,那么当手动释放对象时,会自动调用析构函数
析构函数的原型:
    ~类名()  //析构函数
    {

    }
例如:
    ~People()
    {
        //释放资源
    }

8 友元

        C++提供友元目的是给类的外部提供一个访问类的私有成员的接口,即可以通过友元访问类的私有成员
    友:friend
友元分为友元函数和友元类

8.1 友元函数

关键字:friend
格式:
    friend  函数返回值   函数名(参数列表); //声明一个友元函数
例如:
    friend  void  function();//function函数是一个友元函数

注意:
    友元函数属不属于类的成员?友元函数不是类的成员函数

将一个类的成员函数可不可以声明为另外一个类的友元?一个类的成员函数声明为另外一个类的友元,可不可以访问另外一个类的私有成员?
编译器提示错误:不可访问(提前声明类)
格式:
    friend   返回值类型  类名  ::函数名   (参数列表);

8.2 友元类

关键字:friend
格式:
    friend  class   类名;   //将类声明为友元
例如:
    friend class People; 

9 this指针

        C++中成员函数的特性,在类的非静态成员函数中都会存在一个this指针,来指向当前类,它是隐式的不可见的,是作为函数的第一个参数
        可以通过this指针来解决二义性的问题
this指针原型:
    类名    *   const   this ; //this指针的原型
例如:
    People  *  const  this;

将this指针作为函数返回值使用:
    格式:
        类名     &  函数名 ([参数列表])
        {
            //函数具体实现
            
            return   *this;   //通过该函数将当前对象进行返回
        }

10 static关键字

        C++提供的static关键字主要应用于类的成员,对于不是类的成员与C语言的作用是类似
对于类的静态成员讲,它是类的所有对象共享一份,它不是某个对象所特有的

10.1 static声明成员变量

    用static声明的成员变量是存储在静态全局区,即全局变量
    在C++中不能直接对静态成员变量进行初始化,在类外对它进行初始化
类外初始化格式:
    类型   类名  ::  变量名  =  初始值; //在类外初始化
例如:
    int   People ::  number = 10;   //在类外初始化

10.2 static声明静态成员函数

格式:
    static   返回值类型   函数名 (参数列表)
    {
        
    }
例如:
    static  int  get_value()
    {

    }
静态函数的注意事项:
    1)静态成员函数中是否有this指针?答案:没有,为什么?因为存储在静态全局区
    2)静态成员函数调用非静态成员?静态成员?答案:不能调用非静态成员,可以调用静态成员
    3)非静态成员函数调用非静态成员?静态成员?

10.3 类的静态成员访问方式

1)可以通过类的对象进行访问
例如:
    People people;
    people.function();//这种方式访问
2)可以通过类进行访问
符号:“::”
格式:
    类名  :: 静态成员名 ;//能不能通过这种方式访问类的非静态成员?
例如:
    People  ::   function();

11 const关键字

用const修饰类的成员,就表示成员是不可变,例如:修饰成员变量变量是常量属性
    C++中用const修饰类的成员函数,表示成员函数是对类的成员以只读的性质(保护数据成员)
格式:
    函数返回值类型     函数名  ([参数列表]) const
    {

    }
例如:
    void   function() const
    {

    }

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

语文同步练习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值