![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
菜菜的狗子
这个作者很懒,什么都没留下…
展开
-
一维、二维动态数组的定义与其数值的输入(使用数组与vector)
一、一维数组1.动态数组来实现#include<iostream>#include<vector>using namespace std;int main() { //输入行数 int n; cin >> n; //一维动态数组的申请 int *a = new int[n]; //输入数组的每个元素 f...原创 2020-04-10 21:35:10 · 577 阅读 · 0 评论 -
c++学习——(1)数据的封装
数据的封装首先我们要有面向对象的基本思想,对象在程序中的所有行为都应当通过成员函数来完成,看下面两段程序我们会发现:第一段:这段代码看起来再正确不过了,,,但是他违背了我们面向对象的原则,并没有使用类里面的成员函数来进行数据的操作。class Student{...原创 2019-08-06 15:26:07 · 134 阅读 · 0 评论 -
c++学习——(2)类内定义与内联函数
一.内联函数1.内联函数的声明:2,内联函数与普通函数的区别二.类内定义1.定义:顾名思义就是在类的里面定义成员函数2.类内定义与内联函数的联系一般情况下类内定义的成员函数在编译的过程中被默认为内联函数,那些复杂的函数则编译成普通函数。三.类外定义1.分类同文件类外定义:例子:#include<iostream>...原创 2019-08-06 20:58:56 · 1521 阅读 · 0 评论 -
c++学习——(3)构造函数讲解
一.内存分区1.内存简单分配栈区:一个特点就是内存有系统来进行控制,无论是分配还是来进行回收都不需要程序员来关心。堆区:需要程序员来申请和回收。2.对象中数据的存储 对象在实例化之前是不会占用内存的,但是实例化之后就会在栈中开辟出一段内存,用来存储各自的数据。实例化后不同的对象是不同的变量,占据着不同的内存。 但是注意,逻辑代码只编译出了一份放在代码...原创 2019-08-06 22:07:21 · 191 阅读 · 1 评论 -
c++学习——(4)构造函数初始化列表以及拷贝构造函数
一.初始化列表1.构造函数初始化列使用方法如图所示的类中只有两个数据成员,语法:构造函数后面要用冒号隔开,对于多个数据成员之间要用逗号隔开,赋值的时候要有括号而不能用等于号复制。2.初始化列表特性初始化列表由于构造函数执行:编译器会先给初始列表的成员。赋值再执行构造函数的代码。初始化列表只适用于构造函数。初始化列表可以初始化多个成员数据。3.初始化列表的必要性大家可能会想初始化...原创 2019-08-07 15:25:47 · 2744 阅读 · 0 评论 -
c++学习——(5)析构函数讲解
一、析构函数1.析构函数的定义格式:2.析构函数存在的必要性构造函数是在类实例化的时候调用的,那么析构函数是在类销毁时调用的。如果我们的构造函数有申请内存空间那么在类销毁时必须把申请的空间归还,这就需要我们的析构函数来完成了。3.析构函数的特点*如果没有自定义的析构函数则系统自动生成。*析构函数在对象销毁时自动调用。*析构函数没有返回值,没有参数也不能重载。...原创 2019-08-07 15:57:15 · 163 阅读 · 0 评论 -
c++学习——(6)数组对象与对象成员
一.对象数组1.对象数组的实例化图中有两种实例化方法,前一个是在栈上,后一个是在堆上。2.两种实例化方式的区别在栈区实例化数组:在栈区实例化数组,由系统自动分配内存空间,并自动回收。在堆上实例化数组:自行申请还得自行释放,这一点要注意。3.代码实例main函数代码:#include<iostream>#include<stdlib.h&...原创 2019-08-08 15:51:18 · 657 阅读 · 0 评论 -
c++学习——(7)深拷贝浅拷贝
一.深拷贝和浅拷贝的定义1.浅拷贝 我们前面已经讲过拷贝构造函数的定义与使用了,这里我们简单地讲一下:当我们实例化arr1时采用的是构造函数Array()也就是将arr1中的数据成员m_iCount赋值为5.如果我们是用arr1来初始化art2,那么当arr2实例化的时候呢调用的就是它的拷贝构造函数Array(const Array& arr),里面的代码实现就相...原创 2019-08-08 20:55:28 · 249 阅读 · 0 评论 -
c++学习——(8)this指针
一.对象指针1.什么叫对象指针 顾名思义就是指向对象的指针,如下图我们在堆上实例化一个对象时,使用指针*p指向我们实例化的对象,那么我们对对象数据的访问方法有两种。一种是常见的p->m_iX,另为一种就是(*p).m_iY.思考能不能用指针指向在栈上实例化的对象呢?(肯定是可以的)具体实现如下图:Coordinate p1;Coordinate *p2 = ...原创 2019-08-09 16:41:34 · 165 阅读 · 0 评论 -
c++学习——(10)继承与继承方式
一.什么是继承1.什么是继承c++中的继承和我们生活中所说的继承遗产,继承家业不是一个意思。c++中的继承指的是:面向对象程序设计中使代码可以复用的重要手段,它允许程序员在原有类特性的基础上进行扩展增加功能。这样产生的新的类叫派生类。2.为什么要继承当我们定义一个人类的类,然后定义了一个一个工人类的时候,我们发现工人类具有比人类更多的属性,而且他也具有了所有人类的属性,那么我...原创 2019-08-15 16:33:42 · 220 阅读 · 0 评论 -
c++学习——(11)多态与虚函数
一.多态1.多态的定义 指相同对象收到不同消息或不同对象收到相同消息时产生不同的动作2.静态多态(早绑定)VS动态多态(晚绑定)静态多态:以下图为例子,程序在编译前就确定了使用的是哪个calcArea函数,这就是早绑定也就是静态多态。动态多态:目前所指的对象类型在运行时才确定的。前面我们定义了三个类,在使用的时候:我们调用的cal...原创 2019-08-16 17:04:37 · 363 阅读 · 0 评论 -
c++学习——(12)纯虚函数与RTTI
一.纯虚函数1.纯虚函数的定义:2.纯虚函数的理解: 如果我们定义了一个Shape类,因为有虚函数和纯虚函数,座椅它一定有一个虚函数表,也就会有一个虚函数表指针。如果是一个普通的虚函数那么虚函数表中的函数指针就有一个有意义的值指向一个函数:但是如果是一个纯虚函数那么这个值就是0。3.抽象类:含有纯虚函数的类就叫做抽象类!抽象类是无法实例化对象的!...原创 2019-08-19 15:27:59 · 157 阅读 · 0 评论 -
c++学习——(13)异常处理和多态的应用
1.异常处理关键字关键字:try——catch:尝试(try)运行正常逻辑,如果在运行正常逻辑中出现异常就会用catch来进行捕获。(主逻辑放在try块里面异常处理逻辑放在catch里面) throw:抛出异常基本思想:主逻辑与异常处理逻辑分离。2.异常处理流程 如果我们定义三个函数f1、f2、f3。用f2来调用f1,用f3来调用...原创 2019-08-19 16:51:28 · 200 阅读 · 0 评论 -
c++学习——(14)友元函数
一.友元函数1.全局友元函数的定义 友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。如下图所示,我们的友元用关键字friend来定义,可以通过定义好的友元函数来访问私有成员,如果printXY不是友元函数编译器会报错!2.友元成员函数 下图中我们将Cicle类的成员函数声明为Coordinate的友元函数...原创 2019-08-20 16:38:04 · 160 阅读 · 0 评论 -
c++学习——(15)静态数据成员与静态成员函数
1.静态成员和静态成员函数的定义静态成员并不依赖于对象而是依赖于类,如果我们不实例化对象静态数据成员在内存中依旧存在。静态数据成员会在构造函数中实例化,它的实例化往往是单独进行的。看下图中我们静态数据成员的实例化就是:int Tank::s_iCount不需要加static关键字。2.静态数据成员与静态成员函数的调用访问的方法有两种:第一种不通过对象直接通过类来访问 ...原创 2019-08-21 11:10:58 · 260 阅读 · 0 评论 -
c++学习——(16)运算符重载
一.运算符重载的概念 概念:使原有的运算符赋予新的功能! 本质:函数重载eg1: 用“+”符号一般用来做加法,但是也可以用来拼接字符串。下图中“+”、“=”、“<<”都进行了重载。eg2:下图中我们可以让两个坐标相加得到一个新坐标,但是“+”本身并不具备这样的功能,可以通过运算符重载来让“+"有这样的功能;我们想直接输出一个坐标也可以通过重载输...原创 2019-08-21 16:42:57 · 316 阅读 · 0 评论 -
c++学习——(17)模板函数与模板类
一.函数模板1.函数模板的定义下图中我们三个函数实现的功能实际是一样的,只是数据的类型不同。我们可以通过函数模板来实现将类型作为参数传递就可以实现这三个函数。使用关键字:template typename class注意:typename和class可以混用,他们是一个意思。eg1:通过class来定义模板函数,下图中我们定义了一个max函数模板,并使用这个函数模板,当...原创 2019-08-21 21:39:15 · 289 阅读 · 0 评论 -
c++学习——(18)标准模板库
一.标准模板库STL:Standard Template Lib 标准模板库1.vector向量本质:对数组的封装特点:读取能在常数时间完成eg1:我们首先创建一个向量变量,然后向其尾部插入一个10,然后再删掉尾部的10,最后打印向量的长度还是0。eg2:遍历向量(还可以使用迭代器)2.迭代器:iterator注意一下向量迭代器的定义:vect...原创 2019-08-21 22:18:56 · 131 阅读 · 0 评论