c++
文章平均质量分 74
Verdure
这个作者很懒,什么都没留下…
展开
-
C++继承
封装:封装是把客观事物抽象成类,并且多态:允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。这就意味着。原创 2022-11-15 21:21:36 · 702 阅读 · 0 评论 -
C++模板
模板(Template)指C++程序设计设计语言中采用类型作为参数的程序设计,支持通用程序设计。C++ 的标准库提供许多有用的函数大多结合了模板的观念,如STL以及IO Stream。模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;如下代码所示sort是一个模板函数。举例:将Max模板化。原创 2022-11-14 18:19:35 · 441 阅读 · 0 评论 -
C++对象与对象的关系
在概念上,它们都是对象实例间的一种静态关系,都是在类的抽象层次上的定义,并且最终都可以通过对象的属性来体现。但它们差别是,聚合关系所涉及的两个类型的对象,在现实世界中的含义有明显的has - a (有一个)的语义,能够区分哪个是整体,哪个是部分,而关联所涉及的对象之间没有这种语义,即分不出整体和部分的关系。程序类之间的“依赖”关系主要体现出的是一种使用关系,对于两个相对独立的对象, 当一个对象负 责构造另一个对象的实例,或者当一个对象依赖于另一个对象所提供的服务时,这两个对象之间主要体现为依赖关系。原创 2022-11-11 18:17:48 · 740 阅读 · 0 评论 -
C++静态成员(static)
由关键字static修饰类体中成员,称为类静态成员(static class member)。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公共内存中。静态数据成员被当作该类类型的全局对象。1、设计静态数据成员目的是信息共享和信息交流2、类的静态数据成员为所有类对象所共享,不属于某个具体的实例3、类的静态数据成员必须在类外定义,定义时不添加static关键字,不能在构造函数的初始化列表中创建。原创 2022-11-10 20:53:51 · 5871 阅读 · 0 评论 -
C++指针基本概念及函数指针详解
指针就是一个地址。指针描述了数据在内存中的位置,标示了一个占据存储空间的实体,在这一段空间起始位置的相对距离值。在 C/C++语言中,指针一般被认为是指针变量,指针变量的内容存储的是其指向的对象的首地址,指向的对象可以是变量(指针变量也是变量),数组,函数等占据存储空间的实体。指针变量是存放一个内存地址的变量,不同于其他类型变量,它是专门用来存放内存地址的,也称为地址变量。定义指针变量的一般形式为:类型说明符*指针变量名。原创 2022-11-07 21:41:56 · 751 阅读 · 0 评论 -
C++友元函数
1、 友元函数不是类的成员函数,在函数体中访问对象的成员,必须用对象名加运算符"."加对象成员名。但友元函数可以访问类中的所有成员,一般函数只能访问类中的公有成员。2、友元函数不受类中的访问权限关键字限制,可以把它放在类的公有、私有、保护部分,但结果都一样。3、某类的友元函数的作用域并非该类作用域。如果该友元函数是另一类的成员函数,则其作用域为另一类的作用域,否则与一般函数相同。原创 2022-10-29 21:57:52 · 5082 阅读 · 0 评论 -
C++——const
{a=10;//error//对}{//const修饰的是什么?//指针所指向的内容//p1本身是指针变量,所指向的内容不能修改p1++;//指针所指向的内容p2++;//p1与p2相同a = 50;//error//a可以修改,但*p1不能修改//指针本身//const修饰p3本身*p3 = 50;//p3所指向的内容可以修改,p3不能修改//p3=&b//error,修改p3本身//p4本身和所指向内容都不能修改}原创 2022-10-15 23:34:49 · 434 阅读 · 0 评论 -
C++析构函数
即将s中字符串“pang”的首地址给了m_name,m_name该指针指向字符串常量,字符串并未存储进去,即m_name(name)将m_name指针指向name所指向的那个字符串常量的首地址,并没有开辟空间,不能修改。在栈上开辟的空间不需要释放(默认的析构函数不会释放堆上的空间,只会释放堆上的空间)构造函数——自动调用——构造函数——默认的构造函数(无参,无返回值)析构函数——释放对象——对象退出时——自动调用(程序员可以人为调用)一个合法对象——调用构造函数——开辟空间和赋合法值(初始化)原创 2022-10-15 22:44:40 · 1635 阅读 · 0 评论 -
C++构造函数
解决类成员初始化困惑,即一个类的对象作为另一个类的数据成员。以上操作导致birthday拥有两个值,s中输出的d值不是初始化的,而是通过d赋值给birthday,在执行之前birthday已经拥有合法值。引用和常量作为数据成员 ,都必须在声明的时候初始化,若在构造函数函数体中则为赋值,所以必须用冒号语法来实现。3、组合:强拥有,一个类的对象作为另一个类的数据成员,整体和部分的关系(生存周期一样)如果程序员没有定义构造函数,则类会提供一个默认的构造函数,给类中的数据成员分配空间。原创 2022-10-04 18:22:21 · 264 阅读 · 0 评论 -
C++基础知识2
(3)virtual 虚函数在类中分配一个指针的大小,不管有多少虚函数,都只增加一个指针大小(虚指针指向虚表,虚表中存放虚函数的入口地址,所以只需要一个虚指针)6、内联函数——代码比较短小,功能比较简单的一些函数,放在类里面直接定义,这些函数可作为内联函数调用时可直接将函数体嵌入到当前调用处,直接执行,不会有函数的转移。(1)一般情况下类的大小为属性之和(字节对齐),普通函数(在代码区)不占类的空间大小。4种多态:(1)重载多态——函数重载(函数名相同,参数列表不同),运算符重载。原创 2022-09-25 14:35:23 · 150 阅读 · 0 评论 -
C++基础知识
C——编程思想——函数设计——流程图C++——面向对象思想——类的设计——抽象——类图(UML)1、C++调用 #include 为预处理命令即使用标准名空间中的内容iostream为一个类,包括 istream类——输入流类;ostream类——输出流类cin(输入流对象)——istreamcout(输出流对象)——ostream“”为输出运算符2、命名空间——解决词穷问题实现同一程序内,函数命名相同问题3、 与 “” 的区别。原创 2022-09-22 21:39:32 · 902 阅读 · 0 评论 -
C++——运算符的重载
运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。让类类型的对象像基本数据类型一样去操作 例如:可以实现对象+,-* / % ==!运算符的重载实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该重载的运算符时调用此函数。这个函数叫做运算符重载函数,通常为类的成员函数。定义运算符重载函数的一般格式:返回值类型 类名::operator重载的运算符(参数表) {……}operator是关键字,它与重载的运算符一起构成函数名。原创 2022-05-30 21:02:16 · 10357 阅读 · 2 评论 -
C++——深拷贝和浅拷贝
浅拷贝:将原对象或原数组的引用直接赋给新对象,新数组,新对象/新数组只是原对象的一个引用。深拷贝:创建一个新的对象和数组,将原对象的各项属性1.浅拷贝变深拷贝2.什么时候需要深拷贝,获取堆区资源,系统内核资源...原创 2022-05-25 17:06:58 · 24104 阅读 · 7 评论 -
C++——拷贝构造函数
(用旧对象去构造新对象)拷贝构造函数,又称复制构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构造及初始化。值类型(不行,会产生递归);指针类型(能实现要求,但会出现歧义(感觉a的地址给b构造));引用类型(本类对象的const引用)。其唯一的形参必须是引用,但并不限制为const,一般普遍的会加上const限制。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。原创 2022-05-21 23:23:05 · 27347 阅读 · 1 评论 -
内存泄漏(原因、分类、危害)
一.什么是内存泄漏内存泄漏:也称“存储泄漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果一直占据该内存单元,直到程序结束。即该内存空间使用完毕之后未回收内存泄漏形象的比喻是“操作系统可提供给所有的进程的存储空间正被某个进程榨干”,最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃。“内存泄漏”是从操作系统的角度来看的。这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于磁盘交换区设定的大小。由程序申请的一块内存,如果没有原创 2022-05-17 18:09:51 · 5927 阅读 · 0 评论 -
宏和内敛函数的优缺点及区别
以inline修饰的函数就叫内敛函数(以空间换时间)内联函数必须是和函数体声明在一起才有效1 内联函数的优缺点?优点:(1)因为内联函数是函数,函数参数有类型,因此在编译阶段会进行参数类型检测,安全性更高(2)在Debug模式下默认不会展开,可以进行调试,也可以通过对编译器设置来验证到底是否展开(3)内联函数不用像宏函数那样到处加括号,实现起来更简单(4)不会有副作用(5)内联函数在编译阶段已经展开,少了函数的调用,提高函数的运行效率缺点:(1)每个使用内联函数的位置几乎都会被展开,原创 2022-04-25 19:25:46 · 443 阅读 · 0 评论