
C++
ZerinHwang03
在日出前出发,一路观察影长的变化
展开
-
C++随笔-类继承与包含
类继承在派生类对象中创建基类子对象,并根据继承方式的不同,将基类子对象的函数(方法)接口添加进派生类的相应区域(public、private、protected)。子对象是以未命名成员对象的形式存在于派生类对象中的。包含将基类对象显式地作为新类成员对象。也就是说,基类子对象是以命名的成员对象存在于新类对象中的。...原创 2019-05-14 16:55:22 · 478 阅读 · 0 评论 -
C++随笔-类继承::继承基类接口
“继承基类方法接口的含义”首先,类方法分为实现与接口。所谓方法接口,是用于描述类内与类外交互的途径,因此,只有能够在类外,通过类对象直接对类方法进行调用,才能称为继承了接口。公有继承与私有继承公有继承:基类方法将被添加进派生类的公有部分,成为派生类的公有方法,因此可以通过派生类对象对继承的基类方法进行调用。因此在公有继承机制下,派生类继承了基类的接口,为is-a关系的一部分。...原创 2019-05-10 17:18:27 · 1393 阅读 · 2 评论 -
C++随笔-类继承::protected
首先要知道对于类成员的访问,分为类作用域内进行访问与类外进行访问。基类、派生类都是在继承链中相对的概念。基类中的protected成员,对于基类作用域:全可见 派生类作用域:可见,相当于基类的public 类外:不可见,相当于基类的private对于类中的public、private、protected的划分是为了限制派生类以及类外的访问的。而本类的作用域必然允许是对这三个区域的...原创 2019-05-08 22:51:05 · 170 阅读 · 0 评论 -
C++随笔-类继承::简单继承与多态继承
继承什么是继承?个人的理解就是将基类的成员作为派生类的成员,注意是作为派生类的成员,即加入派生类的类作用域中,叫做继承。作为派生类的成员意味着可以直接通过派生类对象或者派生类方法对其进行访问。派生类对基类数据成员的继承:将数据成员存储至派生类中,作为派生类的数据成员。派生类对基类方法成员的简单继承:将方法提供给派生类,派生类继承了基类方法的接口。值得注意的是,继承了基类方法的接口,...原创 2019-05-08 22:39:40 · 290 阅读 · 0 评论 -
C++随笔-类继承::派生类与基类
派生类与基类之间的关系(is-a)@1 派生类会继承基类的数据成员和部分方法成员,并将其加入派生类的相应区域(public、private、protected,取决于才去的继承方式)。之所以是部分方法成员,是因为有一些特殊的函数不会被继承:构造函数、析构函数、赋值运算符函数等。public、private、protected区域的划分只是对可见性的一种描述,并不是真正实现上按这种方式进行划分。...原创 2019-05-08 22:37:15 · 1312 阅读 · 0 评论 -
C++随笔-友元函数
注意友元函数的身份:非类成员函数。作为类的友元函数,其所获得的只是和类成员函数一样访问类对象的权利,但不代表其可视为类成员函数,理所当然其不可以通过" . "被调用。值得注意的是,通过友元,函数被赋予了访问类对象的权限,其中包括允许访问类的私有(private)和保护(protected)成员。这才是最重要的,因为公有(public)部分直接通过“ . ”方法就可以实现对其的访问。以及在友元函...原创 2019-05-04 21:02:26 · 150 阅读 · 0 评论 -
C++随笔-复制构造函数与赋值运算符
复制构造函数坑得一逼...当使用实例化了的自定义类对象给一个新声明的自定义类对象赋值时,如果没有定义参数为自定义类对象的构造函数,则编译器会自动生成一个复制构造函数...注意:复制构造函数只在新创建的对象进行初始化时被调用,初始化(赋值)的对象类型同为用户自定义类型。例如下列代码:Classname instance1;Classname instance2 = insta...原创 2019-05-04 17:10:26 · 516 阅读 · 0 评论 -
C++随笔-转换函数
默认使用类对象的构造函数作为转换函数当需要将其它类型转换为用户自定义类时,如果用户自定义类中存在只接受一个参数,且该参数为待转换类型的构造函数,则可以在某些情况下隐式调用构造函数作为转换函数,从而实现类型的转换。当构造函数有多个参数时,只有一个参数没有默认值,而其他参数都配置了默认值,则同样可以被自动隐式地作为转换函数。同时,如果担心隐式转换会带来意想不到的错误,可以使用关键字explicit...原创 2019-05-04 09:58:21 · 203 阅读 · 0 评论 -
C++随笔-类之构造函数与析构函数
构造函数和析构函数都是在与类对象相关的程序中,会自动调用的函数。其中构造函数:在类对象初始化时自动调用。C++类对象中构造函数的作用,相当于Python类对象中的__init__(self)方法。都是为了在声明类实例时对类对象完成初始化操作。 析构函数:在类对象过期时自动调用。注意因果关系,是因为类对象要过期了,所以程序自动调用类对象的析构函数。声明格式原型都无返回声明,且构造函数...原创 2019-05-02 21:32:42 · 289 阅读 · 0 评论 -
C++随笔-函数原型存放在头文件中
除了内联函数,在头文件中通常只存放函数原型,而具体函数定义在其他源文件中。需要函数原型的原因程序的声明部分都是服务于编译器的,函数原型也是如此。函数原型描述了函数到编译器的接口。他将函数的返回值类型(如果有的话)以及参数的类型和数量告诉了编译器。例如double volume = cube(side);首先,原型告诉编译器,cube()有一个double参数。如果程序没...原创 2019-04-28 16:34:17 · 1471 阅读 · 0 评论 -
C++随笔-名称空间
C++中的声明区域、潜在作用域、作用域声明区域:允许对某变量进行声明的区域 潜在作用域:是声明区域的子集。从某变量声明处开始,到某变量声明结束为止,都是某变量的潜在作用域。 作用域:是某变量潜在作用域的子集,为程序中,某变量实际可见的区域范围。由此可见,只要在不同的声明区域对变量进行声明,就能将该变量加入相应的声明区域,进一步得到相应的该变量的作用域。而通过对变量在不同声明区域以及使用不...原创 2019-04-28 15:35:48 · 199 阅读 · 0 评论 -
C++随笔-内存模型
C++中提供了三种存储方案:自动存储变量 静态存储变量 动态存储变量其中,动态存储变量采用的是独立的内存管理机制。设立了一个内存池,又称为自由存储空间。动态存储变量不受C++存储机制的影响。其中,描述这三种变量的因素:声明区域 存储持续性。自动存储:只存在一个代码块内;静态存储:存在于整个程序运行阶段 链接性。内部:只能被当前文件所访问;外部:可以被其他文件所访问自动存储变...原创 2019-04-28 12:01:33 · 129 阅读 · 0 评论 -
C++随笔-预处理器
参考原文:https://blog.youkuaiyun.com/huang_xw/article/details/7648117这里只讨论处理以#开头的预处理的编译指令的预处理器预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进行处理的程序。预处理指令一般是无法直接被编译和链接的,则需要由预处理器来进行操作。而在C++中,可以使用预处理指令和具有预处理的功能。预处理中往往会对原文件进行文本...原创 2019-01-29 10:44:17 · 171 阅读 · 0 评论 -
C++随笔-main()函数
因为文本编辑器中编写的代码实际上是要拿给编译器看的,是要由编译器翻译成目标代码之后再经过链接才得到可执行文件,所以需要让编译器知道一个程序的开始与结束。所以实际上最终供计算机使用的代码实际上是由编译器产生的代码,和源代码并不相同,是经过加工过的。而定义main()函数,实际上也是在告诉编译器,这个是程序的入口。至于为什么是main()函数,其实这只是编译器的规定。因为源代码是拿给编译器看的,所...原创 2019-01-29 10:40:17 · 229 阅读 · 0 评论 -
C++随笔-程序的创建
程序创建的过程step1:用文本编辑器编写程序,并将其保存至文件中,这个文件就是程序的源代码 step2:编译源代码。通过运行一个程序,将源代码翻译成计算机使用的内部语言,即机器语言。包含了翻译后的程序的文件即目标代码 step3:链接。将目标代码与其他代码链接起来。链接指的是将目标代码同使用的函数的目标代码以及一些标准的启动代码组合起来,生成程序的运行阶段版本。包含该最终产品的文件称为可...原创 2019-01-29 10:38:44 · 219 阅读 · 0 评论