C++
文章平均质量分 63
就是一些C++primer Plus的个人笔记
Bklls
上岸咯 cqu继续努力吧
展开
-
C++抽象基类ABC理念(Abstract Base Class)(纯虚函数)
对于继承来说,有时候is-a规则并不是看上去的那么简单,比如正在开发一个图形程序,程序会显示圆和椭圆。椭圆有长轴和短轴两个数据成员,当长轴等于短轴时,就相当于是一个圆了。因此我们可以将椭圆类作为父类,圆类作为特殊的子类,但是这会带来一些问题。实际上圆并不需要两个数据成员来刻画,用一个半径就能够刻画了。一.抽象基类理念 对于上面这种问题,我们可以从Ellipse(椭圆)和Circle(圆)类中抽象出它们的共性,将这些特性放到一个ABC(抽象基类)中。再从这个ABC类派生出Ci...原创 2022-03-30 15:04:34 · 1727 阅读 · 0 评论 -
C++特殊成员函数(深拷贝和深赋值)
在C++的类中有这么一些成员函数是自动定义的,具体如下所示:1.默认构造函数2.默认析构函数3.复制构造函数(即拷贝构造函数)4.赋值运算符5.地址运算符C++11提供了另外的两个特殊成员函数:移动构造函数和移动赋值运算符,在后讨论。本文仅讨论1,3,4的问题一.默认构造函数在不定义构造函数时,会自动定义一个默认构造函数。反之则不会定义。如果想在创建对象的时候不显式地初始化,就必须自己显式地定义默认构造函数。这种构造函数没有参数,有两种方式:1.不带任何参数的默认构造。2原创 2022-03-28 15:10:12 · 1789 阅读 · 0 评论 -
C++转换函数(operator typeName())与规范
通常在将double类型的数字变成int类的时候,我们会使用强制转换。如下所属。double a = 12.23;cout<< int (a)<<endl;//输出的就是12了如果我们想将一个类转换成数字呢?匪夷所思,但是可以。我们定义一个Stone类,即石头,储存其重量class Stone{private: double weight;public: Stone(double a){ weight = a;} operat原创 2022-03-27 20:23:02 · 945 阅读 · 1 评论 -
C++友元(友元函数)
1.1为何需要友元我们知道C++的类中访问权限分public,protected,private。当我们想通过类方法进行访问的时候往往是在public的区域写一个函数来访问。但是这种方式过于严格拉,所以C++就有了友元。友元友元,就是类的好朋友,可以用用他的数据啦。1.2举一个重载的例子说明其重要性随手写的一个Time例子,在此类中重载了*号运算符,使*能让对象与一个int类的数相乘,使min变成原来的a倍,并且返回这个T类。class T {private: int ho原创 2022-03-26 20:10:14 · 1966 阅读 · 0 评论 -
C++的const类成员函数
C++的类中有两种定义:1.成员函数 2.数据成员ps:以上是大概的讲,当然还有友元,既不是类的成员函数也不是数据成员,只是需要类中的一些数据在类中声明一下而已原创 2022-03-26 19:33:53 · 798 阅读 · 0 评论 -
C++名称空间
目录1.传统的C++名称空间1.1声明空间1.2潜在作用域2.新的名称空间特性2.1目的2.2 开放特性2.3域解析运算符2.4using声明和using编译指令2.5其他特性3.基于此的编程理念1.传统的C++名称空间1.1声明空间在之前的文章中已经讲过了声明和定义的区别,还记得单定义规则吗。声明区域是可以在其中进行声明的区域。可以在函数外声明全局变量,声明区域为所在的文件;可以在函数中声明,声明区域为所在的文件。1.2潜在作用域变量的潜在作用域从声明点开始,到声明区域的结束。因此潜在作用域原创 2022-03-12 17:04:41 · 1096 阅读 · 1 评论 -
C++静态持续性、外部链接性、内部链接性
链接性为外部的变量通常简称为外部变量,它们的存储持续性为静态,作用域为整个文件。外部变量使在函数外部定义的,因此对于所有函数而言都是外部的。可以在文件中位于外部变量定义的后面的任意函数中使用它,因此也称为全局变量。1、C++单定义规则单定义规则(One Definition Rule),是指变量只能有一次定义。因此C++给出了以下两种变量声明方式:1、定义声明 2、引用声明。1、定义声明(简称定义),它给变量分配存储空间,这是区...原创 2022-01-16 19:24:30 · 635 阅读 · 0 评论 -
C++显式实例化,隐式实例化,显式具体化
一、隐式实例化 以下为一个简单的模板函数,例如传入的两个实参分别为int int 或者double double 时,都可执行。而实际上,函数模板只是实现函数的一种方法,并非实际的实例函数,例如当main函数中执行以下两个函数时pt(1,2); pt(1.2,2.3); 实际上会实例化两个函数,它们的T分别为int 和double,这是编译器帮我们做的工作,因此使用模板函数并不会缩短可执行程序,只是方便了我们对代码的编写。 话说回来,什么是隐式实...原创 2021-12-07 23:38:13 · 2799 阅读 · 0 评论 -
C++变量的存储方式(持续性、作用域、链接性)
这是关于内存的知识,我们设置的变量使如何存放的,C++的存储方式需要用到如下三个名词来解释:持续性:分为1.自动存储持续性2.静态存储持续性。什么意思呢,就是指我们的这个变量的有效期为多少。在默认情况下,在函数中声明的函数参数和变量的存储持续性为自动,作用域为局部,超过了这个代码块就会消亡:int main(){ int a = 1; { int b = 2;//我们关注这里的b,在此阶段b存在 }//退出代码块b已经消亡了,这就是自动存储类型的含义原创 2022-01-10 23:09:25 · 439 阅读 · 1 评论