自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Fizz_沫烨的博客

学海无涯

  • 博客(57)
  • 收藏
  • 关注

原创 STL容器——stack、queue、priority_queue

stack是堆栈容器,是一种“先进后出”的容器。stack是简单地装饰deque容器而成为另外的一种容器。stack.push(elem);   //往栈头添加元素stack.pop();   //从栈头移除第一个元素stack(const stack &stk);           //拷贝构造函数stack& operator=(const stack &stk); ...

2018-04-06 15:25:58 202

原创 STL容器——vector和deque

vector是将元素置于一个动态数组中加以管理的容器。vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法)。vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时。详细操作如下:#include <iostream>#include <vector>using namespace std;void printV...

2018-04-02 19:36:53 283

原创 STL容器——string

        string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char*表示的。string与char*都可以用来表示字符串,那么二者有什么区别呢。string和char*的比较string是一个类, char*是一个指向字符的指针。         string封装了char*,管理这个字符串,是一个char*型的容器。string不用考虑内存释放...

2018-03-28 19:25:08 214

原创 C++入门学习:STL标准模板库基础概念

STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。在C++标准中,STL被组织为...

2018-03-27 10:32:01 220

原创 异常的层次结构(继承在异常中的应用)

案例:设计一个数组类 MyArray,重载[]操作, 数组初始化时,对数组的个数进行有效检查index < 0  抛出异常eNegativeindex = 0  抛出异常eZeroindex > 1000  抛出异常eTooBigindex < 10  抛出异常eTooSmalleSize类是以上类的父类,实现由参数构造、并定义virtual void printErr()输出错...

2018-03-23 21:46:34 254

原创 C++入门学习:异常

1)异常是一种程序控制机制,与函数机制独立和互补     函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它依附于栈结构,却可以同时设置多个异常类型作为网捕条件,从而以类型匹配在栈机制中跳跃回馈.2)异常设计目的:    栈机制是一种高度节律性控制机制,面向对象编程却要求对象之间有方向、有目的的控制传动,从一开始,异常就是冲着改变程序控制结构,以适应面向对象程序更有效地工...

2018-03-23 21:39:10 135

原创 C++入门学习:类型转换

static_cast        double d = 1.2; //static_cast 普通数据类型之间的强转,不能指针之间转换 //static_cast 是在编译期间进行转换的,在运行时不能检测类型,所以类型转换之间存在风险 int b = static_cast<int>(d); /*不能指针之间转换 int *pb = static_cast<int*>(...

2018-03-23 18:21:48 157

原创 类模板的练习:数组类模板

Array.h#ifndef __ARRAY_H__#define __ARRAY_H__#include <iostream>using namespace std;template <typename T>class Array{ //重载输出数组 的<< 运算符 friend ostream& operator<<(...

2018-03-23 15:25:42 335

原创 C++入门学习:类模板的使用(函数在类的内外实现的不同)

//所有函数都在类的内部实现包括友元函数#include <iostream>using namespace std;//所有函数都在类的内部实现包括友元函数template <typename T>class Complex{ //友元函数在类的内部实现————>但它本身还是一个友元函数(外部函数),不是类的内部成员 friend ostream&...

2018-03-23 15:02:07 491

原创 C++入门学习:类模板

类模板类模板用于实现类所需数据的类型参数化 类模板在表示如数组、表、图等数据结构显得特别重要,这些数据结构的表示和算法不受所包含的元素类型的影响。eg:template<typename T>class A {public:      A(T a)      {            this->a = a;      }       T &getT()      {  ...

2018-03-23 14:05:59 160

原创 C++入门学习:函数模板及其使用,函数模板和普通函数的区别,函数模板的机制

函数模板         C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。具体事例#inclu...

2018-03-23 11:00:21 219

原创 C++入门学习:纯虚函数、抽象类和模拟接口

纯虚函数纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把明它声为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。它的一般格式如下:class <类名>//抽象类{virtual <类型><函数名>(<参数表>)=0;//纯虚函数…};抽象类拥有纯虚函数的类叫做抽象类抽象类的特点:1、抽象类不能实例化...

2018-03-21 22:02:21 211

原创 C++入门学习:虚析构、构造中不能实现多态、基类指针指向派生类数组的弊端

虚析构虚析构函数意义:通过父类指针释放子类对象。虚析构函数用于指引 delete 运算符正确析构动态对象 eg:#include <iostream>using namespace std;//基类class A{public: A() { cout << "A 的构造函数" << endl; } virtual ~A()//没有虚...

2018-03-21 20:02:01 283

转载 为什么构造函数不能是虚函数(多角度分析)

1,从存储空间角度    虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度        虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初始化实例,那...

2018-03-21 18:59:00 110

原创 C++入门学习:多态的概念及其原理

多态的目标:一种调用语句有多种不同的表现形态根据实际的对象类型来判断重写函数的调用如果父类指针指向的是父类对象则调用父类中定义的函数如果父类指针指向的是子类对象则调用子类中定义的重写函数实现的手段:通过虚函数来实现(下面会具体介绍)虚函数:在函数声明的没钱加virtual 关键字,该函数就变为虚函数。(内联函数、静态函数、构造函数不能是虚函数)多态实现的条件:1、要有继承2、要有虚函数重写3、用基...

2018-03-21 18:30:48 135

原创 C++入门学习:多继承的概念及其二义性、虚继承的概念

多继承  一个类有多个直接基类的继承关系称为多继承  多继承声明语法    class  派生类名 : 访问控制  基类名1 ,  访问控制  基类名2 ,  … , 访问控制  基类名n    {         数据成员和成员函数声明    };如果基类没有无参构造的话,需要在对象初始化列表中显示调用基类的构造函数基类的构造顺序和在对象列表中调用顺序无关,和在继承时候的继承顺序有关基类指针可以...

2018-03-19 22:47:55 234

原创 C++入门学习:继承中的构造和析构以及同名成员情况

继承中的构造和析构类中成员的初始化:成员属于那个类,则必须要该类对其初始化,即调用该类的构造函数对其进行初始化(在对象初始化列表中显示调用)派生类构造的顺序:先调用父类构造函数初始化父类成员,再调用自己的构造函数对自己的成员进行初始化派生类中有其他类的对象的情况下的构造顺序:1、调用父类构造函数2、调用类中其余类对象的构造函数3、调用派生类自己的构造函数#include <iostream&...

2018-03-19 12:38:05 156

原创 C++入门学习:继承

继承:一个类从另一个类获取成员变量和成员函数的过程继承的语法:类A 继承 类Beg:        class A:访问控制符  B             class Dog : public Animal类B 就是类A 的基类,类A就是类B的派生类(子类)继承的一些特性1、子类拥有父类的所有成员变量和成员函数 2、子类可以拥有父类没有的方法和属性3、子类就是一种特殊的父类4、子类对象可以当作父...

2018-03-19 12:21:32 218

原创 运载符重载三(赋值=,逻辑)

赋值重载赋值重载运算符:  类名 &   operator=(const 类名& 变量名)一个空类中至少有四个函数:无参构造函数、拷贝构造函数、析构函数、赋值运算符重载函数#include <iostream>#include <string.h>using namespace std;class Student{public: Studen...

2018-03-19 11:15:56 193

原创 C++入门学习:对象初始化列表

有这样一种情形 :一个类B中 有另一个类A的对象,A中没有无参构造,不能直接定义A的对象,需要某种机制对A的对象进行初始化。这种机制就是对象初始化列表——用来对对象进行初始化形式——构造函数后面:要初始化的对象特性:1、对象初始化列表比当前对象的构造函数先执行2、对象在对象初始化列表中的顺序和构造顺序无关,和在类中的声明顺序有关3、const常量也要放到对象初始化列表中进行初始化4、析构函数的调用...

2018-03-16 14:45:21 309

原创 运算符重载二(左右移运算符,函数调用运算符)

左移操作符重载左移操作符不能重载为内部函数,原因在与如果重载为内部函数,则应该放到ostream类中,但是ostream这个类是不允许修改的,所以只能用全局的方式友元函数来重载左移运算符#include <iostream>using namespace std;class Complex{ friend ostream& operator<<(ostre...

2018-03-15 22:10:20 276

原创 C++入门学习:运载符的重载(+,-,++,--)

对于运算符的操作数,编译器只能识别基础的数据类型,如果要使用符合的数据类型(如结构体),则需要对运算符的操作数进行拓展是运算符支持复合数据类型,C++中的运算符重载就解决了这一问题。运算符函数定义的一般格式如下:数据类型  operator<运算符符号>(参数列表){        <函数体>}有一些特殊的运算符不能被重载:域解析符(::),条件运算符(?:),直接成员访问...

2018-03-15 20:54:39 607

原创 C++入门学习:友元函数和友元类

友元函数:如果一个函数func(),它是类A的友元函数,该函数可以通过A的对象使用A所有成员(包括私有成员)定义方式:1.在类中写出函数声明2.在函数声明前加一个关键字 friend特点:1.友元函数不是类的内部函数,是一个外部函数,所以没有this指针2.友元函数的声明不受访问控制符影响。可以放到类的任意位置3.友元函数破坏了类的封装性,不要轻易使用eg:class Student{ frien...

2018-03-15 18:30:50 179

原创 静态成员变量和函数,对象的内存模型

静态成员变量特性:1、静态成员变量不是对象的属性,是类的属性,不属于单个对像。2、同一个类的所有对象共享该类的静态成员变量。3、静态成员变量必须在类的外部进行初始化。静态成员函数:只能使用静态成员变量eg:class Student{public: static void show()//静态成员函数,只能使用静态成员变量,因为静态成员函数比普通成员函数少一个this指针 { printf("n...

2018-03-15 16:48:36 291

原创 C++入门学习:new,delete及其和malloc,free的区别

malloc和free 是C语言的库函数,不是语法的一部分new和delete 是C++的运算符,因为是运算符,所以效率要比malloc和free要高一、创建单个变量//malloc和free        int *p1 = (int *)malloc(sizof(int)/sizeof(char));        free(p1);//new 和 delete        int *p2 ...

2018-03-15 15:49:58 135

原创 C++入门学习:构造函数,拷贝构造函数(特殊情况,浅拷贝与深拷贝),析构函数

构造函数:在定义对象的时候对 对象 进行初始化的函数构造函数的特点:1、函数名和类名相同2、构造函数没有返回值3、构造函数不需要手动调用,在创建对象的时候编译器自己会调用4、构造函数可以被重载注意事项:如果类中没有写构造函数,在创建对象的时候编译器会自动创建一个无参构造函数(形式:类名() 函数参数列表中没有参数)是一个空的函数,如果你写了构造函数(编译器默认的无参构造消失),并且形式不跟编译器默...

2018-03-14 22:17:20 206

原创 C++实例练习,判断一个点是否在圆内

圆的头文件#ifndef __CRICLE_H__#define __CRICLE_H__#include "point.h"class Circle{public: //创建圆 void init(int r, int x, int y); //判断点是否在 当前圆 内 bool inCircle(Point &p);private: Point _c; int ...

2018-03-13 22:18:57 6554

原创 C++入门学习:了解封装,类与结构体

A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。      备注:有2层含义(把属性和方法进行封装 , 对属性和方法进行访问控制)      C++中类的封装成员变量,C++中用于表示类属性的变量成员函数,C++中...

2018-03-13 22:11:11 467

原创 C++入门学习:函数重载

函数重载:函数名相同可以有不同的定义函数重载的规则:1.参数类型不同2.参数个数不同3.参数的顺序不同注意:函数的返回值不能作为重载的条件内部实现方式: C++编译器对函数的处理:编译的时候将参数类型加入到函数名中形成新的函数名eg:mySwap(int a, int b){}; =====>函数名变为类似 mySwapii 的形式       mySwap(char a, char b){...

2018-03-13 21:32:27 155

原创 C++入门学习:内联函数、函数的默认参数和占位参数

内联函数内联函数: 被内联编译的函数1.在函数定义的前面加上 inline 关键字,在函数声明前加inline是无效的2.内联函数 在编译完之后的程序中是不存在的,在编译的过程中,会用内联函数的函数体去替换到函数被调用的地方。3.inline 是一种请求,并不会一定成功设置内联函数的要求1.函数中不要有任何复杂的循环语句2.函数中不要有复杂的条件判断3.函数体不要太长,不要超过5行4.函数体编译后...

2018-03-13 20:19:41 159

原创 C++入门学习:引用和常引用

在C中有个关键字typedef 用来给类型(int, char *, double....)取别名,但不能给变量a取别名(int a;)在C++新增了一个概念:引用——给空间取别名(变量名a就代表了一块内存空间)引用的方式:  类型 &要取的别名 = 原来的变量名;(引用变量必须要初始化)eg:int &b = a;//b是a的引用,也就是a所代表的4字节空间的别名,a和b代表的是...

2018-03-13 19:16:35 4089

原创 C++的入门学习:命名空间

在C语言汇总只有一个全局作用域,所有的全局标识符共享同一个作用域,标识符之间可能发生冲突。C++中提出了命名空间的概念:命名空间将全局作用域分成不同的部分,不同命名空间中的标识符可以同名,而不会发生冲突,命名空间可以相互嵌套,全局作用域也称为默认命名空间简单来说:命名空间就是在全局空间里划分出一块空间来,该空间独立存在,与其他空间互补干扰,全局空间内能做的操作,都可以在命名空间内操作(包括再命名一...

2018-03-13 15:11:22 152

原创 C和C++的一些区别(变量的定义,const关键字,全局变量,函数参数,结构体,三目运算)

定义变量:C语言里一个函数里需要用到的变量,需要集中在函数开头出定义(有的编译器可能有优化,允许在函数体别的地方定义变量),否则编译器会报错。在C++中变量可以在任意地方定义(尽量减少变量的作用域 -----> 尽可能延迟变量的定义 -----> 什么时候用,什么时候定义)eg:for (int i = 0; i < 10; i++)  //i是一个局部变量,只在for循环里有效...

2018-03-13 13:49:52 488

原创 scanf,fgets,gets的用法及注意事项!如何才能实现带空格的输入数据

scanf 是从标准输入流stdio (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。第一个参数指定输入的格式(%c——字符,%s——字符串,%d——十进制整型数,%p——指针值(内存地址),%x——十六进制整数)第二个参数是将从键盘输入的数据存放在的已定义的对应变量中,变量名前需加上取地址符 &(只有一个例外:字符数组变量不用加 ...

2018-02-27 20:12:46 6585

原创 生产者与消费者模型代码及具体事例

该模型利用信号量来完成线程间的同步操作(按照一定顺序来决定谁先进缓冲区,谁后进缓冲区);以下为具体事例,去除两线程工作函数内的while语句(对缓冲区的具体操作)后,剩余即为该模型的整体框架结构:一个消费者线程,一个生产者线程,一个缓冲区(缓冲区内有控制生产者和消费者进出的信号量 + 存储的数据)。#include #include #include #include #include

2018-02-06 11:24:29 323

原创 能够实现文件存储的通讯录(进阶版本)

如题利用fopen,fwrite,fread函数实现,创建文件保存之前的通讯录数据,下次再运行通讯录时,任然能够浏览历史联系人的信息。比上次的版本新增了查改好友信息的功能,简化了main函数的代码下面直接上代码:主函数/*需求制作一个电子通讯录,通过该通讯录能存入好友ID 号、姓名(英文)、手机号码、家庭住址、公司电话。模块主界面:主要显示软件功能。A)添加好友信

2018-02-01 22:20:27 217

原创 数组名和数组首个元素之间的关系,以及他们之间的概念混同的错误

数组名代表数组第一个元素的首地址!数组名存着整个数组的开头地址,而数组元素的存储是在数组所开辟出来的内存空间(连续的空间)中从头往后存值的,所以数组名可看作一个指针(指向数组的开头),数组名存的值也就和数组第一个元素的值相同。int a[5] = {1,2,3,4,5};a, &a, &a[0]三者地址在数值上一样 ,所含意义不同!a[0]------数组的第一个元素

2018-01-28 18:24:59 1515

转载 const和#define的区别(各角度理解)

这个区别用从几个角度来说:角度1: 就定义常量说的话: const 定义的常数是变量 也带类型, #define 定义的只是个常数 不带类型。角度2: 就起作用的阶段而言: define是在编译的预处理阶段起作用,而const是在 编译、运行的时候起作用。角度3: 就起作用的方式而言: define只是简单的字符串替换,没有类型检查。而const有对

2018-01-28 10:18:09 209

原创 二叉树及其特殊类型的结构特点和性质,前序、中序、后序遍历二叉树。

二叉树:是n个结点的有限集合,该集合或者为空集(空树), 或者由有个根结点和两棵子树树组成。特点:每个树结点最多有两个子结点,所以二叉树中不存在度大于2.二叉树的五种形态:1、空树。2、只有根结点。3、根结点只有左子树。4、根结点只有右子树。5、根结点既有左子树又有右子树。二叉树的特殊形式:满二叉树:在一个二叉树中,如果分支结点都存在左子树和右子树并且所有的叶节

2018-01-26 20:37:47 808

原创 树的基本结构,以及利用链表实现树的各项操作(创建、添加/删除/打印树节点、销毁等等)

树:n个结点的有限集合,n = 0时称为空树。在非空树中,有且仅有一个根结点(root),根的子树互不相交。单个树节点的度:其所拥有的子结点的数目。树的度:其内所有子结点的度的最大值。内部结点:除了根结点之外的分支结构。叶结点:度为0的结点。结点间的关系:孩子(儿子):一个结点的直接后继称为该结点的孩子结点。该结点称为孩子结点的双亲结点。子孙(孙

2018-01-26 20:04:08 482

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除