![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
C++复习
小黑在抓耳挠腮
一名搞安全的小白
展开
-
4.6.7菱形继承
概念:两个派生类继承同一个基类,一个类又同时继承自两个派生类,这种继承方式叫做菱形继承,或者钻石继承。当多个父类成员命名相同的时候,子类访问父类的同名成员会出现二义性;将同名的成员,抽象到更高层次的爷爷类中。虚继承自爷爷类的父类就叫做虚基类。这样就能够解决继承中的二义性问题。子类是否虚继承自父类,不重要。所有父类虚继承自爷爷类。vbptr是虚基类指针。原创 2024-01-05 21:19:00 · 882 阅读 · 1 评论 -
4.6.6多继承语法
多继承可能会引发同名成员的出现,需要加作用域。原创 2024-01-05 21:16:49 · 364 阅读 · 1 评论 -
4.6.4 继承中构造和析构顺序
构造函数调用顺序:先调用父类,在调用子类。析构函数调用顺序:先调用子类,在调用父类。原创 2024-01-05 21:16:17 · 351 阅读 · 1 评论 -
4.6.3 继承中的对象模型
父类中所有得非静态成员都会被子类继承下来,私有成员只是被编译器给隐藏了。原创 2024-01-05 21:15:24 · 305 阅读 · 1 评论 -
4.6.2继承方式
原创 2024-01-05 21:14:20 · 335 阅读 · 1 评论 -
4.6继承
意义:代码复用名词解释:类 B 继承自 类A。类B 就是 子类(派生类) , 类A 就是 基类(父类)根据直接父类的数量:分为单继承和 多继承如果继承方式缺省的话,默认是 private 方式.特性:子类拥有父类的所有成员和方法,同时也能够扩充自己的成员和方法。现有父类的数据,然后才是自己的。原创 2024-01-05 21:13:33 · 357 阅读 · 1 评论 -
4.4 友元
在程序中,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类访问一个类中的私有成员友元的关键字为 friend友元的三种实现全局函数做友元类做友元成员函数做友元限定友元类中指定的成员函数才可以访问被友元类的数据。先声明被友元的类定义友元类,并声明友元成员函数定义被友元类,并声明友元成员函数定义友元成员函数。原创 2024-01-05 21:10:41 · 338 阅读 · 1 评论 -
4.3 C++对象模型和this指针
C++通过提供特殊的对象指针,this指针,解决代码区分对象的问题,this指针指向被调用的成圆函数所属的对象。c++编译器会给每个空间对象也分配一个字节的空间,是为了区分空对象占用内存的位置为了不让对象内存占用冲突。每一个非静态成员函数指挥诞生一份函数实例,也就是说多个不同的对象会公用一块代码。c++中空指针也是可以调用 成员函数的,但是也要主页有没有用到this指针。再类的非静态成员函数中返回对象本省,可以使用return *this。在C++中,类内的成员变量和成员函数分开存储。原创 2024-01-05 21:08:19 · 350 阅读 · 1 评论 -
4.2 对象的初始化和清理
生活中我们买的电子产品都基本会有出产设置,再摸一天我们不用的时候也会删除一些自己的信息数据保证安全C++中的面向对象来源于生活,每个对象也都会有初始化设置及对象销毁前的清理数据的设置。原创 2024-01-05 21:06:53 · 890 阅读 · 1 评论 -
4.1 类和对象封装
设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以哦显示学生的姓名和学号。在C++中struct和class唯一的区别就在于默认权限的不同。优点1:将所有的成员属性设置为私有,可以自己控制读写权限。类在设计时,可以把属性和行为放在不同的权限下,加以控制。在设计类的时候,属性和行为写在一起,表现事物。优点2:对于写权限,我们可以检测数据的有效性。将属性和行为作为一个整体,表现生活中的事物。:设计一个圆类,求圆的周长。struct默认权限为公共。将属性和行为加以权限控制。class默认权限为私有。原创 2024-01-05 21:04:20 · 316 阅读 · 1 评论 -
3 .函数提高
cout << "func2(int a, int b=10)的调用" << endl;cout << "func(const int& a)的调用" << endl;cout << "func2(int a)的调用" << endl;cout << "func(int a)的调用" << endl;cout << "func(int a)的调用" << endl;cout << "func的调用" << endl;//3、函数参数的类型不同、或者个数不同、或者顺序不同。//2、函数重载碰到默认参数。原创 2024-01-05 12:08:02 · 950 阅读 · 0 评论 -
C++内存分区模型
c++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理全局区:全放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。原创 2024-01-05 11:51:45 · 276 阅读 · 0 评论 -
2.C++引用
/加上const之后 编译器将代码修改为 int temp = 10;//静态变量,存放在全局区,全局区上的数据在程序结束后系统释放。cout << "没有const = " << a << endl;cout << "有const = " << a<< endl;//值传递,形参不会影响实参。//值传递,形参不会影响实参。//引用必须引用一块合法的内存空间。原创 2024-01-05 12:00:36 · 988 阅读 · 0 评论