个人总结的一些C++基础理论

我自己整理的一些C++基础理论知识,面试的同学可以用到: 主要是针对那些基础理论知识比较薄弱的同学吧,希望会对大家面试有些帮助,排版什么的有点乱,大家多多包涵:

类和对象-封装-属性和行为作为整体

C++认为万事万物都皆为对象,对象上有其属性和行为

封装的意义一:a. 将属性和行为作为一个整体,表现生活的事物b. 将属性和行为加以权限控制
在设计类的时候,属性和行为写在一起,表现事物语法:class类名 { 访问权限: 属性 / 行为 };类和对象-封装-访问权限

封装意义二:类在设计时,可以把属性和行为放在不同的权限下,加以控制

访问权限三种:a. public 公共权限
b. protected 保护权限
c. private 私有权限类
对象-封装-C++中class和strcut的区别
C++中struct和class唯一的区别就在于默认的访问权限不同
区别:a. struct默认权限为公共
b. class默认权限为私有类和对象-封装-成员属性私有化优点

1:将所有成员属性设置为私有,可以自己控制读写权限优点
2:对于写权限,我们可以检测数据的有效性类和对象-对象特征-构造函数和析构函数

对象的初始化以及清理:C++中的面向对象来源于生活,每个对象也都有初始设置以及,对象销毁前的清理数据的设置;如果我们不提供构造和析构,编译器会提供编译器提供的构造函数和析构函数是空实现

构造函数:作用在于创建对象时对对象的成员属性赋值,构造函数由编译器自动调、用, 无需手动调用;

析构函数:作用在于对象销毁系统前自动调用执行一些清理工作类和对象-对象特征-函数的分类以及调用

两种分类方式按参数分为:有参构造和无参构造;按类型分为:普通构造和拷贝构造;

三种调用方式:括号法;显示法;隐式转换法;类和对象-对象特征-拷贝构造函数调用时机C++中拷贝构造函数调用时机通常有三种:
1.使用一个已创建完毕的对象来初始化一个新对象
2.值传递的方式给函数参数传值
3.以值方式返回局部对象类和对象-对象特征-构造函数调用规则默认情况下,C++编译器至少给一个类添加三个函数

默认构造函数(无参,函数体为空);

默认析构函数(无参,函数体为空);

默认拷贝构造函数,对属性进行值拷贝;构造函数调用规则如下:
1.如果用户自定义有参构造函数,C++不再提供默认无参构造,但是会提供默认拷贝构造
2.如果用户自定义拷贝构造函数,C++不会提供默构造函数类和对象-对象特征-深拷贝与浅拷贝
浅拷贝:简单的赋值拷贝工作
深拷贝:在堆区重新申请空间,进行拷贝操作类和对象-对象特征-静态成员-静态成员函数

静态成员就是在成员变量和成员函数加上static关键字,称为静态成员

静态成员变量a. 所有对象共享同一份数据b. 在编译阶段分配内存c. 类内声明,类外初始化

静态成员函数a. 所有对象共享同一函数b. 静态成员函数只能访问静态成员变量类和对象-对象特征-成员变量和成员函数分开存储

在C++中,类内成员变量和成员函数分开存储

只有非静态成员变量才属于类的对象上

空对象占用内存空间为:1C++编译器会给每个空对象也分配一个字节空间,是为了区分空对象占内存的位置每个空对象也应该有独一无二的内存地址类和对象-对象特征-this指针的用途

C++通过提供特殊的对象指针,this指针,解决上述问题,this指针指向被调用的成员函数所属的对象

This指针是隐含每一个非静态成员函数内的一种指针

This指针不需要定义,直接使用即可

This指针的用途:a. 当形参和成员变量同名时,可用this指针来区分b. 在类的非静态成员函数中返回对象本身,可使用return *this 类和对象-对象特征-空指针访问成员函数

C++中空指针也是可以调用成员函数的,但是也要注意有莫有用到this指针

如果用到this指针,需要加以判断保证代码的健壮性类和对象-对象特征-const修饰成员函数

常函数:a. 成员函数后加const后我们称这个函数为常函数b. 常函数内不可以修改成员属性c. 成员属性声明时加关键字mutable后,在常函数中依然可以修改

常对象:a. 声明对象前const称该对象为常对象b. 常对象只能调用常函数

This指针的本质 是指针常量 指针的指向是不可修改的 Const Person * const this;在成员函数后面加const,修饰的是this指向,让指针指向的值也是不可修改的类和对象-友元-全局函数做友元1. 友元的目的就是让一个函数或者类,访问另一个类中私有成员

友元关键字friend

友元的三种实现a. 全局函数做友元b. 类做友元c. 成员函数做友元类和对象-C++运算符重载-加号运算符重载

运算符重载概念:对已有运算符重新定义,赋予其另一种功能,以适应不同的数据类型

作用:实现两个自定义数据类型相加的运算

. 通过自己写的成员函数,实现两个对象相加的属性后返回新的对象

通过成员函数重载+号;通过全局函数重载+号 类和对象-C++运算符重载-左移运算符重载作用:可以输出自定义数据类型

不会利用成员函数重载<<运算符,因为无法实现cout在左侧

只能利用全局函数重载<<运算符类和对象-C++运算符重载-递增运算符重载作用:通过重载递增运算符,实现自己的整型数据

前置递增:重载前置++运算符 返回引用是为了一直对一个数据进行递增操作

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjpfp.html