![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
最爱吃兽奶710
岁月淹埋,休想把我沉浮!
展开
-
C++的内联函数
以 inline 修饰的函数叫做内联函数,编译时 C++ 编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。如果是一个几十行的函数,函数本身执行就很耗时,那调用函数、创建栈帧(每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。其实就是函数运行时开辟的函数栈。)的一两行可以忽略不计;但是如果一个函数本身就一两行,因为调用函数本身而产生的那一部分消耗,就格外突出,而宏或者内联的提前替换就显得格外优秀,提高了效率。原创 2023-07-08 18:54:15 · 60 阅读 · 0 评论 -
C++的 new malloc free delete 可以混合使用吗?
对于基本类型而言,没有区别。根据需要 new 和 malloc 可以混用,new[] 和 malloc 可以混用,delete、delete[] 和 free 可以混用。对于构造函数没有作用的类,new 和 malloc 可以混用。对于没有显式定义析构函数的类,delete、delete[] 和 free 可以混用。对于显式定义析构函数的类,delete[] 和 new[] 必须配套使用,delete 和 free 如果想混用,free 需要显式调用析构函数。原创 2023-07-08 18:33:27 · 227 阅读 · 0 评论 -
C++的 new 和 malloc 区别是什么?
new/delete 是 C++ 的运算符,编译时需要加参数,malloc/free 是 C 语言中的函数,编译时需要头文件的支持new 返回指定类型的指针,并且可以自动计算所需要大小,而 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针malloc 只管分配内存,并不能对所得的内存进行初始化,而 new 可以对所得到的内存进行初始化new 在分配内存失败时会抛出异常,而 malloc 在分配失败的时候会返回 NULLnew 会调用构造函数,而 malloc 不会调用构原创 2023-07-08 18:27:45 · 48 阅读 · 0 评论 -
new && delete
【代码】new && delete。原创 2023-07-08 18:16:08 · 27 阅读 · 0 评论 -
深拷贝与浅拷贝
【代码】深拷贝与浅拷贝。原创 2023-07-08 17:36:57 · 35 阅读 · 0 评论 -
c++拷贝构造函数
拷贝构造函数的功能是使用对象创建另一个对象实例,也就是说使用已经存在的对象初始化另一个新的对象。赋值运算符是将一个对象的值赋给另一个已经存在的对象。调用的是拷贝构造函数还是赋值运算符,主要看是否有新的对象产生。用一个对象初始化一个新的对象,拷贝构造函数是把对象当作参数传入,利用传入的对象生成一个新的对象,而赋值运算符是将对象的值赋值给一个已经存在的实例。原创 2023-07-08 16:34:04 · 30 阅读 · 0 评论 -
纯虚函数与抽象类
【代码】纯虚函数与抽象类。原创 2023-06-06 21:13:35 · 60 阅读 · 0 评论 -
虚析构的介绍
【代码】虚析构的介绍。原创 2023-06-06 20:59:37 · 191 阅读 · 0 评论 -
多态的实现
为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表。下面介绍虚函数表是如何实现动态绑定的。原创 2023-05-29 07:43:39 · 47 阅读 · 0 评论 -
多态的介绍
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。原创 2023-05-28 22:21:52 · 34 阅读 · 0 评论 -
函数重写和隐藏
在父类与子类中,函数名相同,参数不同,无论父类中的同名函数是否含有virtual关键字,都是隐藏。在父类和子类中,函数名相同,参数相同,父类中的同名函数没有virtual关键字,为隐藏。子类重新定义父类中有相同名称,返回值和参数的虚函数,主要在继承关系中出现。在子类中只要和父类函数名字相同不是重写,一定是函数隐藏。原创 2023-05-28 21:45:24 · 49 阅读 · 0 评论 -
继承语法和方式
继承允许我们依据另一个类来定义一个新的类,这样做达到了重用代码,和提高执行效率的效果。当创建一个类时,不需要重新编写新的成员变量和成员函数,只需指定新建的类继承了一个已有的类即可。这个已有的类称之为基类(父类),新建的类称之为派生类(子类)。原创 2023-05-28 08:47:55 · 35 阅读 · 0 评论 -
初始化参数列表
【代码】初始化参数列表。原创 2023-05-27 15:13:55 · 50 阅读 · 0 评论 -
析构函数介绍
【代码】析构函数介绍。原创 2023-05-27 14:44:30 · 46 阅读 · 0 评论 -
构造函数介绍
【代码】构造函数啊。原创 2023-05-27 14:38:21 · 37 阅读 · 0 评论 -
this指针
一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。原创 2023-05-27 14:36:57 · 31 阅读 · 0 评论 -
访问修饰符(把属性设置为私有)
【代码】访问修饰符(把属性设置为私有)原创 2023-05-23 09:07:07 · 62 阅读 · 0 评论 -
成员函数(声明和定义的区别)
将属性和行为封装在一起,表现为一个对象,还可以对属性和行为添加一些权限,并尽可能隐藏对象的内部实现细节。类成员函数可以定义在类的内部,或者单独使用作用域。原创 2023-05-23 08:51:47 · 77 阅读 · 0 评论 -
面向对象三大特性
封装:把属性(成员变量)和操作(成员函数)结合为一个独立的整体。继承:子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。多态:多态是同一个行为具有多个不同表现形式或形态的能力。原创 2023-05-23 08:34:19 · 31 阅读 · 0 评论 -
函数参数默认值
在函数声明或者函数定义的时候直接给形参赋值,这样在函数调用的时候可以不需要再给形参传值,会使用他的默认值。参数默认值必须从右向左依次赋值。原创 2023-05-23 08:22:18 · 38 阅读 · 0 评论 -
函数重载到底什么情况
C++允许在同一个作用域中的某个函数(函数重载)和运算符(运算符重载类中会学到)指定多个定义。在同一个作用域内可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(个数、类型、顺序)必须不同。不能仅通过函数的返回类型不同来重载函数。调用一个重载函数或重载运算符时,编译器通过把你所使用的参数类型与定义中的参数类型进行比较,决定使用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。原创 2023-05-20 14:26:37 · 51 阅读 · 1 评论 -
关于C++引用的见解
引用不是新定义一个变量,而是给已存在的变量取一个别名,编译器不会为引用变量开辟内存空间,引用实体和引用变量共用同一块内存空间。原创 2023-05-20 10:02:50 · 53 阅读 · 1 评论