C++
大芊与小箎
这个作者很懒,什么都没留下…
展开
-
C++自学笔记(15)之隐藏与isA
1.隐藏隐藏就是当父类与子类定义相同的成员时,子类从父类继承来的成员会隐藏掉,实例化时调用子类的成员。如上图在定义两个有继承关系的类后,下图中实例化后红色语句第一行是调用子类的play,第二行是调用父类的play。(1)如果是定义了同名的数据成员需要在子类的成员函数中调用时区分的话,如父类的string code,与子类的 int code(同类型也一样)。也可采用上图中的方式code ...原创 2019-04-08 18:53:35 · 183 阅读 · 0 评论 -
C++自学笔记(14)之继承与继承方式
1.继承的概念继承主要是由于一些类存在包含关系,如定义了一个Person类以及Worker类,后者是前者的子集。在定义Worker类时与Person类重复的属性就不用再定义了。定义子集Worker类时形式如下 。实例化之后,内存中看,在Person类中定义了名字和年龄,Worker类中没有定义这两个,但由于继承了Person,其内存中也会存在名字和年龄,以及其特有的工资。在示例化子类时(...原创 2019-04-06 15:48:55 · 234 阅读 · 0 评论 -
C++自学笔记(13)之const在类与对象中的应用
1.常对象成员和常对象成员函数(1)常对象成员在之前的构造函数与析构函数部分已讲过,类似下图定义的常对象成员(在初始化后无法赋其他值),在初始化时只能通过初始化列表在构造函数初始化(2)常对象成员函数const除了能应用于对象成员,也能应用于对象成员函数,如下图左半部分,但是在定义时如果按照右上图那样对数据成员进行赋值是错误的,而对普通成员函数赋值是正确的(如右下图)。主要会出错的原...原创 2019-04-02 15:24:24 · 217 阅读 · 0 评论 -
C++自学笔记(12)之对象指针
对象指针对象作为另外一个类的数据成员在用堆实例化类时,p指向的是第一个数据成员m_iX的地址,也可以使用*p将指针变成对象,来访问相应的数据成员。来看一个代码例子,这里省略了定义Coordinate类的代码(内有m.iX和m.iY两个数据成员),只写main函数里面实例化对象部分Coordinate p1;Coordinate *p2=&p1; //声明对象指针p2-&...原创 2019-03-30 16:21:56 · 176 阅读 · 0 评论 -
C++自学笔记(11)之深拷贝浅拷贝
浅拷贝来看下面一段代码在 实例化arr1的时候,会对m_iCount和m_pArr赋默认值,用arr1实例化arr2时,调用拷贝构造函数,将arr1的m_iCount和m_pArr传给arr2相应的属性.但会带来如下问题,由于m_pArr是指针,arr1和arr2指向同一个地址,在销毁两个对象时会报错。这种也称为浅拷贝深拷贝改为如下代码在拷贝构造函数内为m_pArr申请新的地址(...原创 2019-03-29 16:41:41 · 315 阅读 · 0 评论 -
C++自学笔记(10)之对象成员与数组
对象数组上图为在栈中及堆中实例化数组的例子实现如上图的代码,具体如下先在当前project下创建一个类(这里博主用的是code blok)输入类名Coordinate在出现的Coordinate.h文件输入如下代码#ifndef COORDINATE_H#define COORDINATE_Hclass Coordinate{ public: Co...原创 2019-03-29 15:02:06 · 213 阅读 · 0 评论 -
C++自学笔记(9)之构造函数与析构函数
构造函数类的初始化分为两种:有且只有一次的初始化以及根据类的条件初始化构造函数可以对类进行初始化,并具有如下的特点的规则及特点 :构造函数的功能是对类成员进行初始化对象实例化时自动被调用与类同名没有返回值可以有多个有多个重载形式实例化对象时仅用到一个构造函数用户未定义时,编译器自动生成可以用无参、有参及重载构造函数。构造参数无参或者每个参数都有...原创 2019-03-24 12:23:59 · 187 阅读 · 0 评论 -
C++自学笔记(8)之封装与类外定义
类的构成封装,可以访问类的一部分属性,其余的无法访问。通过访问限定符实现,分为以下三类(未限定时是默认私有的)public公共的protected受保护的private私有的类的成员可以从类外直接访问,用public进行修饰。类实例化类可实例化成对象,分为栈实例化与堆实例化栈实例化申请内存后无需释放堆实例化申请内存使用完后必须释放对栈及堆访问...原创 2019-03-24 10:59:15 · 157 阅读 · 0 评论 -
C++自学笔记(7)之类与对象
类的构成封装,可以访问类的一部分属性,其余的无法访问。通过访问限定符实现,分为以下三类(未限定时是默认私有的)public公共的protected受保护的private私有的类的成员可以从类外直接访问,用public进行修饰。而private修饰的只能是类内的成员访问。类实例化类可实例化成对象,分为栈实例化与堆实例化栈实例化申请内存后无需释放堆...原创 2019-03-24 10:58:30 · 143 阅读 · 0 评论 -
C++自学笔记(6)之内存管理
内存的申请及释放申请内存关键字new 释放内存关键字delete单个内存申请单个内存申请如下图所示申请内存块内存块申请如下图所示注意事项1.下图c语言与c++内存申请及释放语句,要一一对应,不可混搭2.内存申请注意事项内存申请可能会失败,因为操作系统已经分完内存了编码的时候可以如下图进行判断,若指针p为空,则内存申请失败。3.释放内存注意事项释放内存delete...原创 2019-03-22 21:52:13 · 154 阅读 · 0 评论 -
C++自学笔记(5)之函数特性(与c相比)
函数默认值有默认值的参数必须写在参数表的最右端,如图推荐在声明的时候指定参数的默认值,定义的时候不指定,如下图无实参使用默认值,否则实参覆盖默认值函数重载在相同作用域内,同一函数名定义的多个函数,参数个数和参数类型不同。编译好后实际上是名称加参数的形式的来区分两个同名函数。调用的时候根据实参的类型及个数自动识别调用函数优点:比如对不同格式求最大值,如结构体数组等等。定义多个同功能调...原创 2019-03-22 21:03:45 · 129 阅读 · 0 评论 -
C++自学笔记(4)之const
先来看看const与一般变量的关系int x=3 是一个变量,其值是可以改变的。而const int x=3是常量,更改其值的时候会报错。与#Define x 3相比,使用const定义能检查语法错误const与指针类型const int *p=NULL; const int * const p=NULL;int const *p=NULL; int co...原创 2019-03-20 17:01:02 · 148 阅读 · 0 评论 -
C++自学笔记(3)之引用
引用是变量的别名,先看一段代码int main(void){ int a=3; int &b=a; //引用必须初始化 b=10; cout<<b<<endl; return 0;}输出结果为1 0可见,改变引用的变量也会改变原变量结构体类型的引用定义结构体变量...原创 2019-03-20 16:23:17 · 176 阅读 · 0 评论 -
C++自学笔记(2)之命名空间
命名空间namespace的作用使得可以调用不同程序的同一变量这样就可以调用不同命名空间的相同名字的变量#include <iostream>int main(void){ cout<<"hello world"<<endl; system("pause"); return 0;}这段代码会报错F:\CODE\C++\...原创 2019-03-18 22:00:15 · 119 阅读 · 0 评论 -
C++自学笔记(1)之输入输出
与c语言相比c++的输入为cin代替了c语言的scanfc++的输入为cout代替了c语言的printf格式如下:第一行为单输入,第二行为多输入 分别输入x,y的情况像三种输出多个变量的时候应该类似输入那样中间用**<<**隔开这种输入输出的主要优势在:不用关注占位符 不用关注数据类型具体代码如下#include <iostream>usin...原创 2019-03-18 21:02:38 · 130 阅读 · 0 评论