
C+
文章平均质量分 66
忽晴忽雨江湖
这个作者很懒,什么都没留下…
展开
-
【C++】宏(#define)和内联函数(inline)的理解以及区别
宏(#define)和内联函数(inline)的理解以及区别: 宏 缺点: 1.宏没有类型检测,不安全 2.宏是在预处理时进行简单文本替换,并不是简单的参数传递(很难处理一些特定情况。例如:Add(z++)) 3.使代码变长 4.宏不能进行调试 ...原创 2018-10-14 19:26:30 · 1197 阅读 · 0 评论 -
【C++】构造函数、析构函数抛出异常的问题
转自:http://www.cnblogs.com/fly1988happy/archive/2012/04/11/2442765.html1. 抛出异常1.1 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为: throw 表达式;如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,...转载 2019-04-28 21:50:42 · 609 阅读 · 0 评论 -
【算法】对于大数的操作
1.大数相加void Add(string& s1, string& s2){ int len1 = s1.size(); int len2 = s2.size(); string ret; //保存结果 reverse(s1.begin(), s1.end()); //反转以后比较好算 reverse(s2.begin(), s2.end()); ...原创 2019-03-22 21:03:25 · 439 阅读 · 0 评论 -
【C++】构造函数中必须通过初始化列表来进行初始化情况
1、类成员为const类型2、类成员为引用类型#include <iostream>using namespace std;class A{public: A(int &v) : i(v), p(v), j(v) {} void print_val() { cout << "hello:" << i <<...转载 2019-03-20 18:37:11 · 614 阅读 · 0 评论 -
【C++】const 指针与指向const的指针
最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~1.const指针的定义: const指针是指针变量的值一经初始化,就不可以改变指向,初始化是必要的。其定义形式如下:type *const 指针名称; 声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含...转载 2019-03-06 11:52:35 · 448 阅读 · 0 评论 -
【C++】常见的内存泄漏及解决方法
之所以撰写这篇文章是由于前段时间花费了非常大的精力在已经成熟的代码上再去处理memory leak问题。写此的目的是希望我们应该养成良好的编码习惯,尽可能的避免这种问题,由于当你对着一大片的代码再去处理此类的问题,此时无疑添加了解决的成本和难度。准确的说属于补救措施了。一. 什么是内存泄漏(memory leak)? 指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内...原创 2019-02-26 18:19:47 · 2352 阅读 · 0 评论 -
【C】堆区和栈区的区别
一.程序内存的区域二.堆和栈的区别一.程序内存的区域 1、栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,内存的分配是连续的,类似于平时我们所说的栈,如果还不清楚,那么就把它想成数组,它的...原创 2019-01-26 12:43:45 · 2705 阅读 · 2 评论 -
【C++】面向对象的三大特性
封装:封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正是由于封装机制,程序在使用某一对象时不需要关心该对象的数据结构细节及实现操作的方法。使用封装能隐藏对象实现细节,使代码更易维护,同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。继承: 继承来源于现实世...原创 2019-01-15 18:13:07 · 1104 阅读 · 0 评论 -
【C++】智能指针(后续)
上篇文章我们讲了几种智能指针原理以及实现方法,这篇文章我们主要讲一下shared_ptr的线程安全问题和循环引用问题。目录 一.线程安全问题 二.循环引用一.线程安全问题shared_ptr的线程安全问题存在两方面1.由于shared_ptr的原理是多个对象共用引用计数,那么在两个线程的智能指针同时进行++或者--操作时就会出现问题。假设引用计数的初始值是1,在两个线...原创 2019-01-19 16:26:53 · 364 阅读 · 0 评论 -
【C++】const修饰的成员函数
在日常学习中总是碰到const修饰的成员函数,自己也总是稀里糊涂的,只能是靠着编译器来区分const和非const成员函数的相互调用关系,今天在这里总结以下。一.const修饰成员函数的格式在成员函数的后边加上const void display() const { swap(5); cout << "display()" << endl;...原创 2019-01-14 15:43:37 · 3460 阅读 · 5 评论 -
【C++】引用的简单理解以及引用和指针的区别
本文通过三方面来理解指针我们知道在C语言中函数的传参有两种方式:1.传值 2.传址虽然这两种方式都可以实现函数传参但是却各自有着自己的优缺点:传值:无法改变形参的值传址:不是很形象而且不安全所以在升级版C++中为了解决这种问题就使用了引用&一.什么是变量的引用??? 1.概念:引用是给变量取一个别名,它不会开辟新的内存空间,它和引用的...原创 2018-06-13 16:17:56 · 1175 阅读 · 0 评论 -
【C++】智能指针
目录一.什么是智能指针?二.为什么需要智能指针??三. 思维导图 四.模拟实现三个智能指针1.auto_ptr 2.unique_ptr3.shared_ptrshared_ptr的线程安全问题和循环引用的解决方法下篇文章在做分享一.什么是智能指针? 智能指针包括两部分: 1.RAII RAII(Resou...原创 2019-01-13 17:34:17 · 272 阅读 · 0 评论 -
【C++】多态的理解
一.多态的概念简单的讲就是同一事物在不同条件下所呈现出来的不同形态举例:火车站的同一窗口成人售票就是全价票,学生就是半价票。这就是同一事物,但是在不同的条件下可以呈现处不同的形态。有点见人说人话,见鬼说鬼话的意思。二.多态的实现#include<iostream>#include<Windows.h>using namespace std;cla...原创 2018-11-09 16:29:42 · 504 阅读 · 0 评论 -
【C++】struct和class的区别
在C++中我们可以看到struct和class的区别并不是很大,两者之间有很大的相似性。那么为什么还要保留struct,这是因为C++是向下兼容的,因此C++中保留了很多C的东西。一.首先看一下C中struct1.struct的定义struct A{ int a; int b; //成员列表};注意:因为struct是一种数据类型,那么就肯定不能定义...原创 2018-10-27 16:14:03 · 37806 阅读 · 7 评论 -
【C++】四种强制类型转换
强制类型转换在有些地方起到了很大的作用,在看C++中的强制类型转换时,我们首先看一下我们熟悉的C语言中的强制类型转换。一.C语言的强制类型转换C语言中强制类型转换分为两种:隐式类型转换(相似类型转换,及相关类型的转换,这里和类型提升也优点相似) 显示类型转换(不相关类型之间的转换,比如指针和整型)int main(){ int i = 1; double b = i;...原创 2018-10-30 12:41:26 · 4171 阅读 · 2 评论 -
【C++】new和malloc的区别
之前的博客中也有写过new和malloc但是没有系统的整理过。因为最近看面经经常会碰到面试官会问new和mmalloc的区别,所以在这里整理一下,希望对大家有帮助。new和malloc的区别可以从以下几方面进行阐述: 最大的区别:new在申请空间的时候会调用构造函数,malloc不会调用 申请失败返回:new在申请空间失败后返回的是错误码bad_alloc,mallo...原创 2018-10-18 16:56:59 · 1091 阅读 · 0 评论 -
【C++】关于vector<bool>
vector<T>标准库模版类应该是绝大多数c++程序员使用频率比较高的一个类了。不过vector<bool>也许就不那么被程序员所了解。关于vector<bool>不尝试研究一番,一般还不太容易知道其中蕴含的问题。首先得明确一点,那就是vector<bool>是vector<T>的特化版。这个特化版本要解决的问题就是存储容量的问题。...转载 2019-05-04 20:40:16 · 2415 阅读 · 3 评论