
C++
Scott f
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STL array/vector/list简单比较备注
原创 2020-05-09 14:39:13 · 303 阅读 · 0 评论 -
C++的引用与常量
引用的本质之前一直搞不清楚引用是什么,引用其本质就是 (int* const),如下一个简单的引用方式:int a = 10;int& b = a;其实在编译时,编译器会将“ int& b = a ” 变为 “ int* const b = &a ”;由于int* const 所修饰的变量必须要赋初值,且由于const 修饰的 b ,所以表示b指针是无法...原创 2018-12-29 21:55:15 · 350 阅读 · 0 评论 -
C++内联函数与宏定义的区别
宏定义 宏定义作为C语言里面经常使用的工具,其实就相当于一个标签,在编译预处理时会直接将全部代码中的宏定义进行替换。 在很多方面十分的方便,比如 “ #define MAX(x,y) x > y ? x : y ” 取最大值是十分方便的,但是由于它是预处理时的简单替换,所以会发生一些无法察觉的问题:#define ADD(x,y) x+yvoid t...原创 2018-12-30 10:58:56 · 1366 阅读 · 0 评论 -
C++重载的实质
重载函数是如何在运行时被识别,且不会出错的?void function ();void function (int a,int b);void function (int a,double b);在编译过程中,编译器会将其改为 _function 、_function_int_int 、 _function_int_double。所以在运行时,它们实际的,名字是不同的,且很好识别。...原创 2018-12-30 11:21:45 · 256 阅读 · 0 评论 -
C++的explicit的作用与隐式转化
了解explicit之前,要先弄清楚什么是隐式转化。隐式转化既是当构造器只有一个参数时或有多个默认参数时,可以直接用 “ = ”直接赋值。如下:#include "pch.h"#include <string>#include <iostream>#include "malloc.h"using namespace std;class A{public...原创 2018-12-30 20:18:02 · 231 阅读 · 0 评论 -
C++的单例模式
单例模式即从头到尾就只有一个实例,你也无法再new出其他,或拷贝出来。一般的单例模式都会运用到关键词 static ,由static的特性,在静态常量区只会存在一个数据,在编译时就分配空间和类同时加载,所以可以直接用类名进行访问。#include <cstring>#include <string>#include <iostream>#includ...原创 2018-12-31 12:16:39 · 182 阅读 · 0 评论 -
C++“前置++”和“后置++”的原理
直接上代码//前置++T& operator++(){ this = this + 1; //执行递增 return *this;}//后置++T operator++(int) //占位符,表示后置++{ T tmp = this; this = this + 1; //执行递增 return tmp; //返回临时值 }...原创 2019-01-28 16:33:51 · 2969 阅读 · 2 评论 -
C++ 虚函数virtual原理
学习c++的都知道要想实现多态都会用到virtual关键字。class A{public: virtual void out() { cout << "a" << endl; } virtual void print() { cout << "A to print" <<...原创 2019-01-29 14:13:19 · 1107 阅读 · 0 评论 -
const 与 constexpr
const:大致意思是“我永远不改变这个值”,在作为变量传入函数时不用担心在函数内被改变。这里由编译器确认const承诺。constexpr:大致意思时“在编译时求值”,允许将数据放在只读内存内以及提升性能。注意:用constexpr是在编译过程中确定值的,其表达式必须都是constexpr。在用constexpr定义的函数中,函数必须非常简单,且函数中只能有一条计算某个值的retur...原创 2019-09-25 17:32:37 · 311 阅读 · 0 评论