C++知识点(其二)

一、类和对象

:描述一类事物的属性行为的自定义的数据类型(类似于结构体的struct,但和结构体相 比,里面可以添加函数,且不用typedef就能实现它的功能)。

定义方式:class  类名

类在定义的同时,其内还会有“访问限定符”的概念。

访问限定符:包含public和private/protected。

public:修饰的成员既可以在类内被访问,也可以在类外被访问。

private/protecte:修饰的成员之内在类内被访问。

对象:用类这种自定义的数据类型定义的变量。

实例化对象:用类的数据类型定义变量的过程。

方式:类名  对象名

二、封装

封装:把一类事物的属性行为这种自定义的数据类型包裹起来,将需要隐藏的隐藏(private/protected)起来,将需要暴露的暴露(public)出来,这一过程称为封装。

三、this指针

this指针:指向当前类的对象,谁正在调用成员函数,谁就是当前类的对象

this指针在不同位置除,访问的方式有所不同,如下:

类内:在成员函数中可以直接被访问

类外:必须先有对象,然后通过对象进行访问

总结:不管在类内还是类外,访问成员必须要有对象,通过对象.成员或者对象指针->成员

的方式进行访问

四、构造函数和析构函数

1.构造函数

概念:在实例化对象时,由系统自动调用,用来给成员变量初始化的函数

注意:在我们没有自定义构造函数时,系统会提供一个无参的构造函数;但当我们自定义好之后,系统就不再提供。

构造函数在定义的时候要注意一下几点

1.构造函数名要和类名相同

2.构造函数无返回值

3.构造函数参数可以有多个,也可以重载

在构造函数中,会存在默认构造函数的概念,它分为一下三种情况

1.用户本身没有定义,因此会由系统自动提供

2.用户自定义,但构造函数无参数

3.用户自定义,构造函数有参数,且所有的参数都有默认值

要注意的是,以上三种默认构造函数,在main函数调用时,只能选其中一种进行调用(三者是互斥的)。它们的共同点是:在main函数调用的时候只需要实例化对象即可,不需要传参。

2.析构函数

概念:当一个对象生命周期结束的时候,就需要调用析构函数

注意:通构造函数一样,如果用户没有自定义,会由系统提供,如果定义了,系统就不再提供。

定义方式:~   类名

析构函数是无参、无返回值的。

作用:回收资源,如当在构造函数中在堆区申请空间,就需要到析构函数中去释放。

五、new和delete运算符

1.new运算符

概念:在堆区申请空间(类似于malloc)

2.delete运算符

概念:释放堆区的空间(类似于free)

C语言中malloc、free和C++中new、delete的对比:

                C++                                             C语言

一般形式

开辟空间:int *p = new int;                         int *p = (int *)malloc(sizeof(int));

释放空间:delete p;                                    free(p);

数组形式

开辟空间:int *p = new int[5];                     int *p = (int *)malloc(sizeof(int)*5);

释放空间:delete []p;                                  free(p);

new、delete和malloc、free的区别:

1.malloc和free是标准c库的函数,new和delete是c++的运算符

2.malloc需要强制类型转换,而new不需要

3.malloc需要计算开辟空间的大小,而new不需要

六.static在C++中的使用

c语言中static的作用

1.修饰局部变量时延长了局部变量的生命周期

2.修饰全局变量时限制了全局变量的作用域

3.修饰函数时限制了函数的作用域

c++中static的作用

static修饰成员变量

1.必须在类内声明,在类外定义(原因:static修饰的变量在编译阶段就会开辟空间,而类在编译解决没有空间,成员变量又是类的一部分,有矛盾,而声明不分配空间,定义才分配空间)。

2.先于对象而存在,一个类只有一份,所有对象共享,不占某个对象内存空间大小。

3.在类外可以直接通过类名加作用域的方式进行访问(静态成员变量必须在public才行)。

static修饰成员函数:

1.可以直接通过类名加作用域访问

2.没有this指针,不能访问非静态成员

3.非静态的成员函数可以访问静态成员

七、const在C++中的使用

const修饰的成员函数:

1.const修饰的成员函数中不能修改任何成员变量的值

2.const看似在修饰成员函数,实则是在修饰这个成员函数的第一个形参this

3.常成员函数(被const修饰的成员函数)只能调用常成员函数

const修饰的对象:

1.不能作为左值

2.只能调用const修饰的成员函数

3.不能修改成员变量的值

4.非常成员可以调用常成员

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值