C+
文章平均质量分 78
MISSyingying
如果有一天我变得很有钱..............
展开
-
C++之引用常量,引用做参数,引用做返回值,,const引用,内联函数(),友元函数,static修饰的类的静态成员
引用:书上的概念是这样的:引用是某个已知变量或对象的别名。引用不是变量,它自身没有值,也没有地址,他不占用内存空间。创建引用:格式:<类型>&<引用名> = <初始值>; int a = 1; int& b = a; int& c = a; int& d = a; cout<<&a<原创 2018-03-17 12:23:23 · 753 阅读 · 0 评论 -
C++思维导图
C++大总结 基础知识请戳 基础知识 类和对象请戳 继承请戳 多态及多态的原理请戳 模板请戳 异常请戳 智能指针请戳智能指针 强制类型的转换请戳 动态内存管理请戳...原创 2018-06-18 21:59:02 · 1289 阅读 · 0 评论 -
C++中四种强制类型的转换
在C语言中,有隐式类型的转换和强制类型的转换. 隐式类型的转换:相关类型的转换,即意义相似的类型. 强制类型的转换:不类型类型的转换,比如:指针和整型. 例如:int i = 20;double d = i;//隐式类型的转换.int* p = (int*)i;//强制类型的转换.以下是C++的类型转换的四种类型.它们都是类模板.static_case(静态转换)不可以用...原创 2018-06-18 09:50:26 · 18253 阅读 · 1 评论 -
C++智能指针之Scoped_Ptr与SharePtr以及仿函数
Scoped_Ptr(防拷贝)上一篇博客中已经讲述了智能指针之AutoPtr,它存在很大的缺陷.所以有一种更粗暴的方法——Scoped_Ptr. Auto_Ptr出现的问题都是由于进行拷贝构造和赋值运算符重载引起的资源不能得到有效的释放.那么就直接不要进行拷贝构造和赋值运算符重载,那么就不会引起那些问题了. 下面是简单的代码实现: 1 #pragma once ...原创 2018-06-17 18:24:44 · 429 阅读 · 0 评论 -
C++智能指针之AutoPtr
在学习异常的时候,异常有一个很大的缺陷,就是异常会导致执行流乱跳.从而可能会导致某些资源没有被及时得到释放等等问题. 例如这样的问题: 1 #include &amp;amp;lt;iostream&amp;amp;gt; ...原创 2018-06-16 21:36:44 · 258 阅读 · 0 评论 -
基于C++的单例模式
单例模式是一种设计模式. 单例模式表示在定义的某一个类中,只能有唯一的一个对象(即只能有一个实例). 优点:提高了封装性,外部不能轻易的改变实例.饿汉模式含义:程序启动后就会立即加载到内存. 缺点:启动比较慢. 代码如下:#include &lt;iostream&gt;using namespace std;template&lt;class T&gt;class...原创 2018-06-23 23:54:44 · 136 阅读 · 0 评论 -
线程-----线程概念,线程创建,线程终止,线程等待,线程分离
线程的概念在生活中,我们在使用电脑时,可以同时使用多个软件,比如:在写代码的同时,还可以听着音乐.即使有一个CPU,也可以同时进行多个任务. 更充分的利用多核CPU:可以将一个任务分给几个CPU然后同时进行. 线程:是一个进程内部的”控制序列”. 任意进程至少有一个线程. 特点: 1.线程是操作系统进行调度的最小单位. 2.一条线程指的是一个单一顺序的控制流(一个进程...原创 2018-06-08 21:59:19 · 325 阅读 · 0 评论 -
C++之异常
错误处理的方法: 1.程序终止.(例如assert断言,Linux中的段错误等) 2.返回错误码. 3.返回一个合法值,不至于让程序崩溃.(例如:服务器程序) 4.异常,返回错误信息. 异常:当一个函数发现自己无法处理的错误时就抛出异常,让程序员可以直接或者间接的去处理这个问题.#include&lt;iostream&gt;#include&lt;vector&gt;using...原创 2018-06-01 21:59:20 · 593 阅读 · 0 评论 -
Linux之进程间通信之消息队列,共享内存,信号量
消息队列消息队列的结构有很多,但在这里讲的队列的结构都是基于链表实现的.进程间通信的实质是:让不同的进程可以看到相同的资源.消息队列的特点:消息队列的通信是通过发送有类型数据块的方法.每个数据块都有一个类型,接收方接受的数据块可以有不同的类型值.所以:消息队列提供了一个进程向另一个进程发送了有类型数据块的方法.实现消息队列的相关函数:#include &amp;amp;lt;sys...原创 2018-06-14 21:59:05 · 812 阅读 · 0 评论 -
C++之迭代器失效及解决
迭代器失可能会导致野指针,可能会引起漏删或者插入时出错.list中的迭代器失效在标准库中,list是带头双向不循环链表. 场景一:删除链表中所有的偶数节点 7 list&amp;lt;int&amp;gt; l; 8 l.push_back(0); 9 l.push_back(1); 10 l.push_back(2); 11 l.push_ba...原创 2018-06-20 21:59:33 · 2141 阅读 · 0 评论 -
浅谈模板函数和模板类以及不使用乘除,for,while,等循环和递归来计算1+2+3+4+....+n的值
模板函数概念:一种与类型无关的代码. 作用:复用. 下面通过一个实例来实现:template&amp;amp;amp;amp;amp;lt;class T&amp;amp;amp;amp;amp;gt; //类比函数参数,但是模板参数传递的是类型T Add(T a,T b){ return a + b;}int main(){ int a = 10; int b = 20; cout&amp;amp;原创 2018-05-14 13:05:01 · 680 阅读 · 1 评论 -
C++之多态的实现以及虚表
在C++中,多态:见名知意,就是多种形态.虚函数的主要作用就是实现多态,就是父类的指针/引用调用重写的虚函数,当父类的指针/引用指向父类对象时调用的是父类的虚函数,指向子类时指向子类的虚函数.多态的实现原理在有虚函数的对象实例中都存在一张虚函数表(简称虚表),而虚表中存放的则是实际应该调用的虚函数. 下面我们通过代码来模拟查找一下:...原创 2018-05-10 11:14:47 · 713 阅读 · 0 评论 -
1.如何实现一个不能被继承的类2.如何实现一个只能在栈上生成对象的类3.如何实现一个只能在堆上生成对象的类
1.如何实现一个不能被继承的类不能被继承的类,我们先回忆一下,当子类继承父类时会发生什么?子类在继承父类时,会继承父类的所有成员,并且子类的构造函数(在初始化时)会合成父类的构造函数进行合成。蹬蹬蹬……那么,如果我们把父类的构造函数声明为私有(private)的,当子类在初始化调用构造函数时就会失败。但是,把构造函数声明为私有的,也就不能在类外创建对象了。所以,我们还需要在类中写一个静态的函数...原创 2018-04-25 20:58:27 · 232 阅读 · 0 评论 -
C++的String类的实现 && 深拷贝 && 写时拷贝
浅拷贝的缺陷?①普通的浅拷贝会在拷贝构造初始化完成后,对象在生命周期结束后,就会析构多次而使程序崩溃。 ②如果改变了其中的一个值,另外一个也会随之而改变。 所以为了防止以上两种问题,就有了解决的方案。 1. 深拷贝在拷贝的时候,为其也申请相同大小的一块空间。每个对象都指向自己的空间。这样就不会因为析构同一块空间而出现崩溃。 但是,在有些情况下深拷贝会浪费空间。比如:当现实中...原创 2018-04-19 10:32:17 · 511 阅读 · 0 评论 -
C++之继承,菱形继承,虚继承,虚函数,纯虚函数
继承,访问限定概念:当一个类被其他的类继承时,被继承的类称为基类,又称父类;继承其他的类叫做派生类,又称子类。基类定义了所有派生类的共有属性,派生类在继承共有属性的同时,又增加了自己特有的属性。 注意:一个类可以有多个子类,一个子类也可以有多个父类,甚至子类也可以变为父类,被其他类进行继承。这就属于多继承。 作用:继承是为了复用。共享公有的东西,同时又可以实现自身独有的特征。 <继承方式...原创 2018-04-22 20:31:40 · 1136 阅读 · 2 评论 -
C++动态内存管理,malloc,calloc,realloc和new,delete的讲解
在C语言中,动态内存管理的函数是:malloc,calloc和realloc.使用结束后,需要我们通过free来进行手动清理。 malloc:按字节来开辟空间,如果开辟成功,就返回这段空间的首地址。否则,返回NULL。函数原型是:void* malloc(size_t size);calloc:在malloc的基础上,还可以进行初始化开辟出来的空间。函数原型:void* ca...原创 2018-04-04 12:28:45 · 1160 阅读 · 0 评论 -
C++的6大成员函数,构造函数(初始化列表),析构函数,拷贝构造函数,运算符重载,const成员函数以及Data(日期类)的实现
在C++中,有6个默认的成员函数(即如果不写成员函数,系统就会自动调用)。一,构造函数构造函数是特殊的成员函数。作用是:在创建对象时,对对象进行初始化。其特征有:①构造函数是成员函数,可以写在类体外,也可以写在类体内。②函数名与类名相同。③不指定类型说明,无返回值。④实例化对象时系统自动调用。⑤构造函数可以重载。⑥如果在定义类时,没有写构造函数,系统就会自动生成一个缺省的构造函数,但是如果自己写了...原创 2018-03-28 15:19:47 · 497 阅读 · 0 评论 -
C++之命名空间,程序在翻译过程中的四个步骤,函数重载,缺省参数
今天,我们进入了C++的学习之旅。首先,我们来写一个简单的代码:#include<iostream>#include<windows.h>using namespace std;int main(){ cout<<"hello,C++"<<endl; system("pause"); return 0;}下面我们展开来...原创 2018-03-13 16:45:45 · 440 阅读 · 0 评论 -
C++之STL六大组件以及vector在标准库的使用以及模拟标准库的vector实现
STL六大组件: 1.容器(存放数据) 2.算法 3.迭代器(封装) 4.空间配置器 5.配接器(适配器) 6.仿函数 问题1:如何释放vector的空间? 解决:创建一个空的临时对象,然后将临时对象赋值或交换....原创 2018-06-20 13:28:22 · 290 阅读 · 0 评论