C++
文章平均质量分 55
HDong99
这个作者很懒,什么都没留下…
展开
-
C++和C语言的区别(一)——函数的区别
C++有添加的新的特性也有与C语言的一些区别,为了方便学习,就特别对重要的一些特性和区别进行学习。此次学习的是:1、函数的默认参数,2、inline函数,3、函数重载 1、C++的函数默认参数:在函数声明或定义时候,给函数参数预先赋值,当函数调用有空缺参数时,就将该值作为默认参数传入。(1)默认值必须从右向左一次赋值,不可跳过。void fun(int a, int b, int...原创 2018-12-31 00:00:55 · 1695 阅读 · 0 评论 -
01赋值运算符函数
如下为类型声明,为该类添加赋值运算符函数。class CMyString{public: CMyString(char* pData = nullptr); CMyString(const CMyString& str); ~CMyString(void);private: char* m_pData;};需要注意以下问题:1.返回值是否为引用:如果不是引用则...原创 2019-04-16 21:57:35 · 217 阅读 · 0 评论 -
C++子类继承父类后的子类相应的成员属性
子类继承方式 public protected private 父类成员属性 public public protected private protected protected protected private private 不可访问...原创 2019-03-06 17:22:47 · 3700 阅读 · 0 评论 -
STL容器的底层实现
STL容器 底层实现 备注 近容器 string - 数组[] - 顺序容器 vector 一维数组 list 双向链表 deque 二维数组 关联容器 set 红黑树 不允许数据重复 multiset 红黑树 允许数据...原创 2019-03-02 23:06:27 · 575 阅读 · 0 评论 -
C++面向对象的构造与析构函数
C++是面向对象的语言,和C语言面向过程有不同,C++更针对于一类事物的本质,它的使用就和C语言有所不同。下面是使用面向过程的思想经常使用的四个函数,下面的四个函数将会伴随我们C++的整个生涯。①构造函数,②拷贝构造函数,③重载=运算符函数,④析构函数。我们使用一个简单的Person类来讲解。class Person{private: char *_name; int _ag...原创 2019-01-09 12:59:38 · 295 阅读 · 0 评论 -
C&C++函数调用过程
调用函数主要关注三个方面分别是函数名,返回值和参数列表,我接下来将会深入底层讲解调用函数的过程。调用函数的过程主要有四方面,①函数参数代入,②函数栈帧开辟,③函数返回值,④函数栈帧回退首先来看一段简单的c文件代码,和它的汇编码,只需简单浏览即可:源码:int fun1(int a, int b){ int c = a + b; return c;}int main()...原创 2019-01-08 23:52:39 · 14758 阅读 · 0 评论 -
C&C++编译链接过程
本文讲解编译链接过程,因为才疏学浅可能有些不准确。使用c文件的编译链接过程,使用Linux系统用来查看文件信息。(1)从源文件main.c编译链接成main.exe,需要经历如下步骤: (2)其中符号和符号表是什么呢?段又是什么?段:在一个程序中,所有的代码最后都只后生成指令和数据。指令和数据分别存在不同的段中。符号:所有的数据都会生成符号来标记它自己,指令中只会有函...原创 2019-01-08 19:00:21 · 275 阅读 · 0 评论 -
C++和C语言的区别(六)——命名空间
命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。所以使用标准标识符都有以下三种方式。(1)直接指定标识符(2) 使用using关键字(3)使用 using namespace std;当然命名空间不仅仅是这么使...原创 2019-01-07 23:55:35 · 664 阅读 · 0 评论 -
C++和C语言的区别(五)——变量引用
引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。(1)引用的实现int main(){ int a = 10; int &b = a; int *p = &a;}对于这一段代码,我们通过编译器查看该代码的汇编码如下:可以看到引用操作和指针操作的汇编码完全相同,所以我们就可以知道,引用如何做到①引用的底层是一个const...原创 2019-01-07 23:40:56 · 407 阅读 · 0 评论 -
C++和C语言的区别(四)——使用C++中特性替换宏定义
C语言的宏有一个重要特性那就是在预处理阶段就进行字符替换。用C++的特性替换C语言中的宏主要有三种方式:①typedef、②inline函数、③const修饰符而这三种方式都有和宏最大不同的区别就是,他们都是在编译期进行的。(1)typedef:C语言与C++两者所共有的,但是与宏仍有区别,区别如下:①typedef 创建的符号名只受限于类型,不能用于值。②typedef 由编...原创 2019-01-07 23:04:38 · 523 阅读 · 0 评论 -
C++和C语言的区别(三)——const
(1).c文件与.cpp文件中const的区别我们先引用两个大致相同的代码段:c文件中: C++文件中:可以看到两段近似相同的代码竟然出现了不同的输出。 他们的主要区别如下,这就可以解释为什么C++文件中打印的值为10了。 (2)c++文件中const与指针的联合使用int main(){ int a = 10; int b = 20; const ...原创 2019-01-07 22:39:40 · 185 阅读 · 0 评论 -
C++和C语言的区别(二)——动态开辟内存的区别与new的使用
C++中和C语言中都有动态开辟内存的概念,C语言中使用的是库函数malloc和free,而C++中使用的则是关键字new与delete,它们的部分区别如下:现在我们同时使用两种方式动态开辟二维数组a[5][5]C语言:#include <malloc.h>#include <assert.h>int main(){ //动态开辟二维数组 int...原创 2019-01-07 22:25:30 · 405 阅读 · 0 评论 -
隐式类型转换
C语言和C++有时候会出现一些隐式类型的转换,本文不讨论何种情况转换,讨论当转换的时候会怎么转换。用图来表示,画的特别粗略,很多类型都没表示出来,只是为了说明情况。当两种不同类型的数据进行运算的时候,两种数据转换到相同的类型进行计算。但是不能进行优先转换的降级。...原创 2018-12-31 00:22:59 · 214 阅读 · 0 评论 -
02单例模式
本来剑指offer中的单例模式是C#的,但是不代表C++中不能实现单例模式单例模式:只能生成该类的一个实例单例模式的实现过程1.构造函数私有2.类内有一个指向自己的静态指针3.提供一个可以访问这个类的get接口4.把拷贝构造函数和=操作符也设为私有,防止被复制5.有懒汉式与饿汉式解法1:只适用于单线程环境//只适用于单线程环境class Singleton1{pu...原创 2019-04-18 22:09:32 · 151 阅读 · 0 评论