C++
快乐遇见忧伤
这个作者很懒,什么都没留下…
展开
-
C++指针错误
c++ string类型的变量不能赋值为NULL,否则会出现如图所示的错误原创 2017-04-10 15:29:55 · 352 阅读 · 0 评论 -
继承
1.继承的重要性继承是面向对象的三大特征之一,同时继承又是面向对象另一个特征“多态”的基础,没有继承也就没有多态。面向对象语言的强大之处在于能够非常轻松自如的按照分层思想开发程序,特别是开发大型程序,分层思想对于搭建整个程序的宏观架构有着非常重要的作用。继承使面向对象语言具有巨大的生命力,因为总是可以以继承方式从已经存在的代码(类)基础上创造出具有新特点的代码(类)。被继承的类被称为基类(或原创 2017-08-03 10:03:53 · 245 阅读 · 0 评论 -
多态
1.所谓多态多态就是一种特殊的机制,执行这种机制的结果就是,调用同一个接口,在不同的情况下可以实现不同的功能。(1)c语言模拟的多态 讲c语言时强调过,实际上c语言也是可以模拟多态,主要时利用函数指针 进行函数的回掉实现的,这个实现过程往往会借助于结构体进行封装实现。(2)面向对象语言的多态 在面向对象的语言中多态的实现依赖三个机制 (1)继承 (2)函原创 2017-08-03 10:14:21 · 288 阅读 · 0 评论 -
异常
1. 异常与c语言的判错处理几乎所有的高级语言都有异常处理,只是c语言是一个例外,c语言只有简单的错误处理。在c++中引入了异常处理机制,该机制被很多面向对象的语言继承和借用,在java中的异常处理与c++几乎是一样的,在java中异常处理使用的更加频繁。c++中的可以抛出任意类型的异常,这些类型可以是基本类型,自定义类类型,系统提供的特定异常类类型。但是在java中有些不同,在java中只能原创 2017-08-03 10:21:34 · 376 阅读 · 0 评论 -
标准模板STL-概述
1. STL(1)先回忆数据结构从数据结构的学习中,我知道了有顺序表,链表,哈希表,顺序树,链式数等数据结构可以用于存放数据。在c中,这些数据结构都需要程序员自己实现,但是在面向对象的语言中,为了节省编程者的开发时间,都提供了自己的定义的现成可用的数据结构,这些数据结构本质上还是数组,链表,树(红黑树),哈希表等等。(2)一个数据结构包含哪些内容以我们之前学习的链表这个数据结构为例,它原创 2017-08-03 12:11:48 · 382 阅读 · 0 评论 -
Linux-进程控制
1、引言 2、进程标识 3、多进程 4、fork函数 5、vfork函数 6、exit函数 7、wait和waitpid函数 8、竞态 9.exec函数族 10.进程状态 11、system函数1、引言我们知道./a.out就能够让我们当前路径下的程序a.out(可执行文件)运行起来,我们称呼这个正在运行的程序叫进程(动态运行的程序),既然是动态的那么这个过程就有生有死,原创 2017-08-03 15:55:46 · 287 阅读 · 0 评论 -
STL模版-vector详解
3. vector容器 (1)普通数组与vector 只要能够使用数组的地方,就一定可以使用vector代替,前面说到,vector其实就是 数组,只是空间开辟于堆中。普通数组长度是固定的,但是vector容器的容量和大小 可以根据实际情况不同而改变。 容量与大小: 对于vector来说容量和大小是不同的,容量>=大小, 容量:vector容器最大能够存放的元素个数。 ...原创 2019-03-16 14:53:25 · 263 阅读 · 0 评论 -
STL-list详解
4.list容器(1)list的特点前面讲的vector是非常常用的容器,使用频繁都非常高。vector的优势: vectoer的优点直接导致了它的缺点,因为vector本身就是数组,数组 是顺序(连续)存储的,因此可以很好的支持随机访问,支持随机访 问是顺序存储的优势。vector的缺点: 在序列中频繁插入和删除的效率非常的低,因为会涉及大片内存数据被 移动,这也是顺序存...原创 2019-03-16 14:54:17 · 305 阅读 · 0 评论 -
STL-关联容器
5. 关联容器(1)关联容器的特点(1)容器需要存放对象和key值,key值与对象之间是一种映射关系。(2)每个对象被存入到关联容器中时,会对key进行排序,进过比较后找到合适的 位置后存放。因此key的数据类型需要提供排序方法,可以通过提供orerator<() 或者Compare这两个函数进行比较。(3)map只支持双向迭代器,因此不支持随机访问,虽然map支持[key...原创 2019-03-16 14:56:50 · 290 阅读 · 0 评论 -
操作符重载
1.c++中运算符可以被重载在c++中,几乎所有的运算符都可以被重载。2.不可以被重载的运算符有6个运算符是不能被重载的,它们分别是。::? :..*sizeof###3. 重载的格式返回值 operator被重载的符号(参数){ 重载的内容;} (1)如果重载是字母字符,例如new delete,那么operator与字幕字符之间至少留 一个空格,其原创 2017-08-03 09:51:36 · 375 阅读 · 0 评论 -
操作类对象
1. 类的指针和引用(1)指针和引用 在c语言中,指针是进行高效访问内存的手段,但是即便如此仍然涉及空间开辟和赋值 操作。在c++中,引入了比指针更加高效的传参方式,那就是引用,不需要任何的赋值 操作。指针和引用作为高效使用内存的方式,在c++中,对于类和对象来说同样有着频繁的使用。(2)引用并不能完全替代指针 实际上引用虽然比指针的效率更高,但是引用并不能完全的原创 2017-08-02 21:20:49 · 377 阅读 · 0 评论 -
类
1. 类和面向对象编程在上一章节就讲过,即便是在面向过程的语言中,我们就遇到过类和对象的概念,特别是在讲结构体时,类和对象的概念就更清晰了。但是如果要完全按照面向对象的思想去开发程序,使用面向过程语言中的那些类和简单的对象是无法满足要求的。在c++中为了兼容c语言,c++中保留了结构体的数据类型,c++对结构体做了扩展之后,完全可以使用结构体来实现面向对象的开发,但是c++中引入了另外一个关原创 2017-08-02 21:10:17 · 491 阅读 · 0 评论 -
指针
C++(大多数语言的)内存结构(1)内存结构图(2)不同的管理区域 (1)名称 (2)作用 (3)管理特点 (4)按照不同的分类划分内存区域进行理解(3)理解内存结构的重要性 (1)加深对语言的理解,提高编程质量 (2)特别是对于带有指针的C和C++语言,有助于理解段错误的产生的原因(3)内存的作用 (1)临时存放(缓存)代码和程序中用到的原创 2017-08-02 16:56:52 · 291 阅读 · 0 评论 -
传统数组
传统数组 目录: 1、一维数组 1.1、什么是一维数组,一位数组在内存中的结构是什么?结构中每个单元空间的大小是多少? 1.2、一维数组的定义: 1.3、一维数组的数组名如a的含义包括哪些? 1.4、如何给值给一维数组? 1.5、如何使用 1.6、一维数组的传参 1.7、探讨下a和&a的区别与联系 2、二维数组 2.1、什么是二维数组 2.2、二维数组的定义: 2.3、二维原创 2017-08-02 17:12:48 · 329 阅读 · 0 评论 -
数组
(1)传统的数组实现方式见另一篇博客传统数组(2)自动分配数组(1)一维数组(malloc/delete)#include <iostream> #include<iterator> #include<list> #include<stdlib.h> #include<stdio.h> #include<time原创 2017-08-02 17:37:11 · 244 阅读 · 0 评论 -
C++函数
1. 函数(方法),是程序最小的算法组织单元,将程序一个大的算法进行分解成一个个函数的小算法叠合而成,不管什么程序,程序的执行过程都是函数相互嵌套调用的过程。在面向对象的语言中,本质还是函数和方法,类只是一种以对象进行管理和编程的手段。 2. 程序分解成函数的好处 (1)代码重复利用(2)节省存储空间(3)便于模块设计,提高开发效率但是不能将算法无休止的分解成为各种函数模块,注意原创 2017-08-02 17:44:35 · 412 阅读 · 0 评论 -
C++函数2
1. 函数重载(1)函数重载来源于何处 常常需要多个不同的函数完成几乎相同的功能。 比如说,在再java和c++中都提供的比较两个数中那个数做大的函数的, 比函数的名叫max,但是实际上因为数据类型的不同,需要针对int,float ,double给出各种不同的函数实现。在c中的典型做法就是就是定义成这样max_int(), max_double(), max_f原创 2017-08-02 18:01:33 · 333 阅读 · 0 评论 -
程序文件与预处理
1.程序文件分类(1)头文件 (1)后缀:c和c++头文件都是以.h结尾 (2)作用 (1)存放各种声明 (1)#开头的各种预处理指令的声明,比如宏定义,#include包含其它文件 (2)各种类型的声明,比如结构体,联合体,类类型,全局变量定义 (3)各种函数声明 (2)头文件还可以包含原创 2017-08-02 18:10:49 · 535 阅读 · 0 评论 -
自定义数据类型
1. 类类型和对象的概念(1)概念简单解释 (1)对象:指的是具体的东西(2)类/类型:抽象的模型(2)站在程序数据类型的角度看类和对象 (1)站在基本类型的角度 (1)int, double, char, short等基本类型都是抽象的模型 (2)使用基本类定义的变量或者常量就是对象 int a=10;原创 2017-08-02 18:15:47 · 901 阅读 · 0 评论 -
C++存储对齐
结构体相关知识 目录: 1、c语言的变量存储时的对齐问题? 1.1、什么是对齐存放:变量在内存中的存放地址能够整除它的类型大小,如:int a = 100; &a%sizeof(a) == 0; 1.2、对齐分为两种 1.3、为什么要对齐存放? 加快cpu对内存的访问速度。 1.4、原子类型的自然对齐 1.5、结构体的适当对齐 1.6、手动对齐 2、柔性数组 2.1、定义原创 2017-08-02 21:03:22 · 360 阅读 · 0 评论 -
STL-算法
6.算法(1)算法介绍(1)什么是算法 所谓算法就是数据的具体处理方式,在程序中算法的常见组织形式就是 函数,单个的子函数就是一个小型的算法单元。(2)c++中涉及的算法有两类 (1)c++函数库提供的算法函数(现成可用的算法) (1)成员算法函数 所有的容器的都有自己的成员算法函数,比如vector/list/map都提供了 swap算法函数。 除此...原创 2019-03-16 15:00:12 · 376 阅读 · 0 评论