C++
刘小小小小刘
https://liuziqiao.github.io/
展开
-
C++之函数重载与引用剖析
在介绍重载与引用之前,我们回顾以下C语言中函数,学过C语言我们都知道,定义一个函数可以给参数可以选择不给参数,这取决于我们调用这个函数时使用的功能,然而我们在C++中有一个叫缺省参数的概念。缺省参数:声明或定义函数时为函数的参数指定一个默认值,在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参,并且,函数参数是从右开始匹配(printf函数就是从右向左压栈,打印的时候从左向右)...原创 2018-11-24 20:25:18 · 130 阅读 · 0 评论 -
函数模板遇上函数重载
普通函数与函数模板调用规则规则函数模板可以像普通函数一样被重载C++编译器优先考虑普通函数如果函数模板可以产生一个更好的匹配,则选择模板可以通过空模板实参列表的语法限定编译器只通过模板匹配实例#include<iostream>using namespace std;template<typename T>void fun(T& a, ...原创 2019-06-19 20:52:29 · 1798 阅读 · 1 评论 -
谈谈派生类中static关键字
派生类中static关键字假设一个面试场景,面试官问你,在C++中,继承和static关键字在一起会怎样?我们首先想到在基类中static的作用以及特性: 基类定义的静态成员,将被所有派生类共享 根据静态成员自身的访问特性和派生类的继承方式,在类层次体系中具有不同的访问性质(遵守派生类的访问控制) 派生类中访问静态成员,用以下形式显式说明类名::成员或者通过对象访问 对象名.成...原创 2019-06-19 18:04:08 · 355 阅读 · 0 评论 -
单例模式
单例模式:一个类只能创建一个对象,该模式可以保证系统中只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式的要点有三个:单例类只能有一个实例它必须自行创建这个实例它必须自行向整个系统提供提供这个实例具体实现角度来说,就是以下三点:单例模式的类只提供私有的构造函数类定义中含有一个该类的静态私有对象该类提供了一个静态的公有的函数用于创建或获取它本身的静...原创 2019-03-27 22:49:32 · 119 阅读 · 0 评论 -
C++之继承体系
什么是继承继承是面向对象程序设计中的一个重要概念,继承允许我们依据一个类来定义另一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。当创建一个类时,不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物,因此,狗是...原创 2019-03-15 16:16:43 · 417 阅读 · 0 评论 -
C++中指针常量与常量指针的区别
在C++学习过程使用中,每个人都不可避免的会把指针错误理解或在不理解,尤其是对指针常量和常量指针的理解,特别容易把概念搞混淆。本文就针对该问题简单的说说指针常量和常量指针的区别。指针常量本质是一个常量,而用指针修饰它。指针常量的值是指针,这个值因为是常量,所以不能被赋值。特征:是个常量。指针锁保存的地址可以改变,但指针指向的值不能改变。指针本身是常量,指向的地址不可以变,但指向的地址...原创 2019-03-19 16:25:58 · 740 阅读 · 0 评论 -
宏替换?内联函数
在上一篇中提到了宏定义常量,说到宏这个概念,我们就来谈谈C++中关于宏的真正概念。用内联函数取代宏在C++ 语言中支持函数内联,目的是为了提高函数的执行效率。在C语言中使用宏代码的方式提高执行效率。宏本身不是函数,但使用起来像是函数。在编译预处理阶段拷贝宏代码的方式取代函数调用,省去了参数压栈,生成汇编语言的CALL调用,返回参数等等。但是使用宏的最大缺点就是容易出错。因此在C++中采用了一...原创 2019-03-02 15:57:30 · 271 阅读 · 0 评论 -
const与define的比较
const与define在C++中定义一个常量用const修饰,也可以用#define来定义,但是前者比后者更具有优点:const所修饰的常量可以具有类型,而宏常量没有数据类型。编译器可以对前者进行静态类型安全检查;而对后者只进行字符替换,没有类型安全检查,并且在字符替换的时候可能产生意料不到的错误。集成开发环境可以对const常量进行调试,而不能对宏常量进行调试。建议在C++程序中尽...原创 2019-03-02 15:36:14 · 269 阅读 · 0 评论 -
const在C语言和C++中的区别
const在C语言和C++中的对比一C语言中const是定义了一个const变量,该变量只具备读的功能,不具备写的功能。C++中const是定义了一个常量。const int a = 5;int array[a]; //在C语言中编译错误,因为a是一个变量int array[a];//在C++中正确,因为a是一个常量const在C语言和C++中的对比二C语言中不能定义c...原创 2019-03-02 15:28:49 · 1034 阅读 · 4 评论 -
浅谈new/delete
在C语言的学习中,我们知道动态内存开辟是使用malloc函数来进行开辟一段连续的空间,释放则是用free来进行释放,而学习了C我们知道,在C中开辟内存是使用new,释放则也与之对应的delete,下面我们就来说说malloc/free与new/delete之间的区别以及底层实现原理回顾在C语言库中函数原型如下#include <stdlib.h>void *malloc...原创 2018-11-17 17:31:54 · 253 阅读 · 2 评论 -
C++函数模板机制剖析
?思考:为什么函数模板可以和函数重载放在一起。C++编译器是如何提供函数模板机制的?实例#include<iostream>using namespace std;template<typename T>void fun(T& a, T& b) { cout << "a" << a << "-b: " &l...原创 2019-06-19 21:27:03 · 470 阅读 · 0 评论