![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
一步一个脚印___
这个作者很懒,什么都没留下…
展开
-
C++对象模型
1,什么是对象模型?对象模型,就是对象在内存中的存放形式,如何在内存中体现出对象的多种特性。2,为什么要了解对象模型?借用侯捷老师的一句话,勿在浮沙筑高台。我们要想写好代码,写更少的bug,或者在出现问题时能够快速分析定位问题。我们就必须了解C++的底层机制,知其然知其所以然。从而,无论是工作还是面试,我们都能以不变应万变。待续。。。...原创 2020-03-28 00:06:17 · 151 阅读 · 0 评论 -
把C++当作产品来研究
0.前言开发一个产品,我们会首先研究它的需求,也就是要解决的问题,然后再去用代码实现它。同样,C++也是一个软件产品,我们从一个产品的角度来分析它,并逐渐深入它。将之前学习的知识点(多态、虚表等特性)系统化。1,需求背景开发C++的需求背景是什么?C++是基于C语言开发的,那为什么不要C语言,而要开发C++呢?有的同学可能会说,是为了加类。是吗?那为什么要加类呢?之所以开发C++,是因...原创 2020-03-28 00:05:58 · 177 阅读 · 0 评论 -
new和malloc的区别
先看下new、delete的实现过程://new的实现过程是先分配内存再调用类的构造函数//举个例子:ClassA* pClassA = new ClassA();//new的实现过程如下:void* mem = operator_new(sizeof(ClassA));//step1:分配内存pClassA = static_cast<ClassA*>(mem); //...原创 2020-02-26 22:52:00 · 137 阅读 · 0 评论 -
智能指针(pointer like classes)
为什么要有智能指针C++的内存分为两种,栈和堆。栈中的内存使用之后不需要程序员去释放,会被自动释放。而在堆中分配的内存,是不能自动回收,需要程序员通过书写代码去回收。(malloc在堆中分配的内存由free来回收,New在堆中分配的内存由delete来回收。)如何智能回收内存借助RAII机制,RAII(Resource Acquisition Is Initialization),是C++采...原创 2020-02-13 21:25:19 · 182 阅读 · 0 评论 -
C++函数重载
函数重载是C++的特性,而C语言没有这种特性。什么是函数重载?支持相同函数名,不同参数列表的函数同时存在,而在C语言中会报错。例如:void testFun();void testFun(int param);void testFun(int param, bool flag);void testFun(bool flag, int param);以上函数在C++中能够同时...原创 2020-02-11 16:36:53 · 149 阅读 · 0 评论 -
C++书籍分享
目录总结:零.手册类:《C++程序设计语言(The C++ Programming Language)》《C++标准程序库(C++ Standard Library Tutorial and Reference) 》《The C++ IO Streams and Locales》《The C++ Standard (INCITS/ISO/IEC 14882-2011)》...原创 2019-11-17 00:13:53 · 1553 阅读 · 4 评论 -
函数模板(function template)
描述:函数模板做的事情就是将函数的参数类型进行抽象化,如下面代码写到的,这是将两个类进行比较,取最小的,这个类可能是int、long、double、复数、年龄类等,如果在一个工程里,多个类都涉及到这种比较,就需要对每个类都写一次这样的比较函数。因此,函数模板就是为了解决类似问题,当算法一样时,只是参数类型不一样时,将参数类型进行抽象,写出通用函数,这就是函数模板。#include &...原创 2019-01-04 14:25:42 · 593 阅读 · 0 评论