![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 82
慵懒小书虫
温故而知新,不会的地方太多了,所以要认真重新学起,以此记录下学习过程,加深印象。有的地方,自己不动手不知道错误在哪。如果能够对后来者有一丁点作用 那也是一件非常开心的事儿~
展开
-
友元 基础详解版 (友元函数、友元类、友元非成员函数和友元成员函数)
友元一般来说,类的公有成员能够在类外访问,私有的成员只能被类的其他成员函数访问。在C++中,可以定义友元,如果某一个函数定义为类的友元,则该函数就可以访问该类的私有函数。也可以把一个类定义为另一个类的友元。友元函数如果在某个类的定义中用friend声明了一个外部函数(或者是其他类的成员函数,既可以是public型,也可以是private型)后,这个外部函数称为类的友元函数。C++提供一种允许外部类和函数存取类的私有成员和保护成员的辅助方法,即将它们声明为一个给定类的友元(或友元函数),使其具有类成原创 2021-04-06 09:21:08 · 1176 阅读 · 0 评论 -
虚析构函数如何解决内存泄漏问题
虚析构函数析构函数的作用是在对象撤销之前做必要的“清理现场”的工作。但派生类的对象从内存中撤销时一般先调用派生类的析构函数,然后再调用基类的析构雨数,但是,如果用new运算符建立了临时对象,若基类中有析构函数,并且定义了一个指向该基类的指针变量,在程序用带指针参数的delele运算符撤销对象时,会发生一个情况, 即系统会只执行基类的析构函数,而不执行派生类的析构函数。以下示例演示了一个析构函数调用不恰当带来的内存泄漏情况:// 析构函数调用不恰当带来的内存泄漏.cpp : 定义控制台应用程序的入口点。原创 2021-04-01 15:15:32 · 696 阅读 · 0 评论 -
一文带你理解虚函数、纯虚函数 (以程序实例详解区分)
文章目录1、多态与虚函数静态联编动态联编**实现动态联编必须满足以下3个条件:**为什么需要虚函数2、虚函数的访问对象名访问基指针访问引用访问3、纯虚函数与抽象类纯虚函数声明和定义抽象类1、多态与虚函数多态性:指同一个操作作用于不同的对象就会产生不同的响应。多态性分为静态多态性和动态多态性,其中函数重载和运算符重载属于静态多态性,虚函数属于动态多态性。C++是依靠虚函数来实现动态和多态的。静态联编以函数重载为例,C++编译器根据传递给函数的参数和函数名决定具体要使用哪一个函数,称为联编。编译器原创 2021-03-31 21:33:55 · 597 阅读 · 0 评论 -
区分基类、派生类、多基派生、虚基类
文章目录定义基类和派生类多基派生虚基类派生类的构造函数派生类的析构函数定义基类和派生类class 派生类名:派生方式 基类名{ private: 新增私有成员列表; public: 新增公开成员列表;};三种数据成员、三种派生方式及访问权限派生方式privateprotectedpublic基类成员privateprotectedpublicprivateprotectedpublicprivateprotectedpublic原创 2021-03-30 17:15:51 · 1444 阅读 · 0 评论 -
《C++ primer》第五版学习笔记--第七章 类
《C++ primer》比其他C++相关书籍,知识点细致很多很多,每次看书都会有新的理解~文章目录定义抽象数据类型定义成员函数引入`this`引入常量成员函数在类的外部定义成员函数定义一个返回this对象的函数定义类相关的非成员函数类的基本思想:数据抽象和封装数据抽象是一种依赖于接口和实现分离的编程技术。类的接口包括用户所能执行的操作;类的实现包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。封装实现了类的接口和实现的分离。封装后的类隐藏了它的实现细节,也就是,类的用户只能使原创 2021-03-28 22:34:31 · 209 阅读 · 0 评论 -
函数调用之三种函数参数传递,今天终于分得清楚了!
形参和实参函数的形参和实参具有以下特点:1.形参变量只有在被调用的时候,才会分配内存单元,在调用结束是,即刻释放所分配的内存单元。,因此,形参只有在函数内部有效,函数调用结束返回主调函数后则不能再使用该形参变量。2.实参可以是变量、常量、表达式、函数等等,无论实参是何种类型的,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此,应预先用赋值、输入等办法使实参获得确定值。3.实参和形参在数量上、类型上、顺序上应该严格一致,否则会发生“类型不匹配”的错误。4.函数调用中发生的数据传原创 2021-03-24 10:08:58 · 3770 阅读 · 0 评论 -
数组和指针微妙关系,你知道多少
每次学习都能比之前理解得更好一些,说到底,还是自己运用的不够多。加油加油,冲冲冲!数组数组名的值是一个指针常量,也就是数组第1个元素的地址。它的类型取决于数组元素的类型:若是int类型,那么数组名的类型就是“指向int的常量指针”;若是其他类型,则数组名的类型是“指向其他类型的常量指针”特殊:只有在两种场合下,数组名并不用指针常量来表示:1.当数组名作为sizeof操作符,sizeof返回整个数组的长度,而不是指向数组的指针的长度。即返回整个数组所占用的字节而不是一个指针所占用的字节。2.单目操原创 2021-03-23 11:39:58 · 295 阅读 · 0 评论 -
字符串、字符和字节
三者关系:字符串是由一个个字符组成的,每个字符又由一个或多个字节来表示,每个字节又由8个bit位来表示。字符:计算机中使用的文字和符号,比如1、2、A、B、%等等。字节(Byte):一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。不同编码里,字符和字节的对应关系不同:①ASCII码中,一个英文字母占一个字节的空间,一个中文汉字占两个字节的空间。②UTF-8编码中,一个英文字符等于一个字节,一个中文等于三个字节。③Unicode编码中,一个英文等于两个字节,一个中原创 2021-03-22 11:30:25 · 3930 阅读 · 6 评论 -
字节对齐—结构体变量的sizeof
首先回顾一下,32位与64位(指的是寄存器的位宽)操作系统下,不同数据类型所占的字节数:32位操作系统环境下:字符型:char 1; unsigned char 1整型: int 4;unsigned int 4 ;short 2 ;unsigned short 2;long 4;unsigned long 4;浮点型:float 4;double 8;long double 8;unsigned long double 8;unsigned double 8;字符串型:string.原创 2021-03-20 11:38:53 · 243 阅读 · 0 评论 -
C/C++ 结构体基础知识
结构结构是比数组更为灵活的一种数据结构,将不同的数据类型的变量集合到一个整体,这个整体便称之为结构。定义形式:struct 结构名称(或称标识){ 存储数据列表;(或称成员变量列表)};struct student{ char name[20]; int age; float weight;}注意:标签字段允许多个声明使用同一个成员列表,并且创建同一种类型的结构。此时这个声明把标签student和成员列表联系在一起,但并没有提供变量列表,所以并未创建任何变量。原创 2021-03-19 20:59:26 · 158 阅读 · 0 评论 -
动态内存分配 (详解版)
动态内存分配 (详解版)malloc和freeC++语言允许使用C语言标准库函数中malloc和free申请和释放内存,保留这两个函数主要有以下3点考虑:C++程序经常要调用写好的C函数,而在C语言中,只能使用malloc和free;如果C++程序要允许在C语言环境下,必须使用malloc和freenew和delete的功能是通过调用malloc和free来实现的new和delete是C++运算符,new和delete是C标准库函数。C函数库提供了malloc和free两个函数,分别用于执原创 2021-03-18 20:31:27 · 16322 阅读 · 4 评论