![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++语法
文章平均质量分 71
规则内行事事半功倍,驾驭规则
四库全书的酷
格物致知,所有未知都可变成已知!
展开
-
C++类的构造函数构造时的赋值顺序
C++中类如果继承自父类,且构造时手动调用父类构造;赋值顺序如下:1、父类构造函数赋值;2、子类成员会按照声名顺序赋值。原创 2022-09-04 13:56:15 · 1132 阅读 · 0 评论 -
lambada表达式 (匿名函数对象)和 for_each()函数
文章目录前言定义举例捕获方法[var][=][&var][&][this]注意std::for_each()前言函数式编程的一种关键编程语法。本质就是匿名函数(不给函数指针命名的函数)。定义[capture](parameters) mutable return-type{ statement}capture:捕获方法(父作用域的变量)parameters 参数列表mutable,传入的const我也可以改return-type 返回值后置statment 语句(原创 2022-05-15 12:33:17 · 349 阅读 · 0 评论 -
转发调用包装器bind(),以及函数ref(),cref()
文章目录std::bind()函数说明举例std::ref() & std::cref()说明举例std::bind()函数说明定义于头文件 <functional> template< class F, class... Args >/*unspecified*/ bind( F&& f, Args&&... args ); (1) (C++11 起) template< class R, class F, c原创 2022-05-14 23:47:50 · 228 阅读 · 0 评论 -
高级函数指针 function<T(args...)>
文章目录举例说明cppreference手册例子分析自己实现高级函数指针实现代码分析类间关系举例#include "head.h"using namespace std;int add(int x,int y){ return x + y;}class ADD{ public: int operator()(int a,int b){ return a+b; }};int main(){ function<int(int,i原创 2022-05-14 21:48:28 · 406 阅读 · 1 评论 -
可变参C API va_list,va_start,va_arg_va_end以及c++可变参模板
文章目录C变参APIC变参API函数原型C变参API实现源码C变参API应用实例C 变参函数缺点C++变参实现方法initializer_list 形参可变参数模板C变参APIC变参API函数原型va_list ap /* 就等价于char *ap,定义一个指针 */va_start(ap, format) /* 就是将指针ap移动到第一个可变参数的地方,即ap = ap + sizeif(char *) */va_arg(ap, 变量类型) /* 返回当前ap指针指向的值,原创 2022-05-10 22:57:42 · 267 阅读 · 0 评论 -
类实例化 对象的内存模型 及 内存占用分析
文章目录前言简单类的内存模型理解静态成员属性和方法的特点只有对象才会有内存模型!!成员函数如何获取对象数据??基类与派生类的内存分配派生类继承基类类的内存占用情况分析前言下面的工具查看对象的内存模型:利用VS查看内存模型简单类的内存模型首先,明白一个类的组成及其内存模型分布。如下图所示,类的成员中除了普通成员变量之外,其他的均不存储在对象的存储空间中,只存储在静态区。也就是说,一个类可以实例化n个对象,除了普通成员变量分别存储在n个对象的内存空间中,其他的成员在内存中只有一份。即,一个类的原创 2022-05-10 18:43:51 · 1336 阅读 · 0 评论 -
c++ remove_reference
文章目录作用源码看看remove_reference 做了什么?反例一:在不考虑解引用的情况下。*代码**结果**分析*正例:使用解引用*代码**结果*作用手册解释如链接。源码template <typename T>class remove_reference{public: typedef T type;};template<typename T>class remove_reference<T&>{public: typ原创 2022-05-10 18:08:01 · 1373 阅读 · 0 评论 -
c++ 模板 特化与偏特化
文章目录内容提炼代码一(内置类型)typename代码二(自定义类型) class注意点内容提炼decltype(expression) 关键字:得出experssion的类型typeid(variable) 返回variable的类型auto + + ->decltype{} 自动推演返回值特化与偏特化代码一(内置类型)typename#include<iostream>using namespace std;//auto + <function> +原创 2022-05-10 16:57:38 · 222 阅读 · 0 评论 -
显示类型转换 const_cast, static_cast, dynamic_cast, teinterpret_cast的使用
文章目录const_cast :: 对const和volatile限定符进行擦除static_cast ::常用隐式转型的显示使用dynamic_cast ::检查安全向下转型(继承关系)reinterpret_cast::跨越无关类型的转换reinterpret_cast有何作用当reinterpret_cast面对constconst_cast :: 对const和volatile限定符进行擦除主要作用将const和volatile的限定作用擦除(没有真的去除这个变量的限定类型,而实使用另一个变原创 2022-05-07 19:21:14 · 597 阅读 · 1 评论 -
关键字 之 static,const,constexpr,volatile
文章目录1.static关键字1.1 static全局变量1.2 static局部变量1.3 static函数1.4 类的static成员1.5 类的static数据成员1.6 类的static函数成员2.const关键字2.1 初始化与const、修饰普通类型的变量初始化与const:修饰普通类型的变量:2.2 const与文件有效期2.3 const修饰引用2.4 const修饰指针2.5 const修饰参数传递2.6 const修饰函数返回值2.7 const修饰类的数据成员2.8 const修饰类的转载 2022-05-07 13:36:30 · 1938 阅读 · 0 评论 -
linux的进程内存模型
文章目录前言Linux进程的五个段内存模型详细说明按照内存模型按照数据类型(特殊的)立即数字符串面量const 变量(一定是被初始化的)前言 进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。 不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。 对任何一个普通进程来讲,它都会涉及到5种不同的数据段。Linux进程的五个段下面我们来简单归纳一下进程对应原创 2022-05-07 12:40:59 · 899 阅读 · 0 评论 -
左值、右值、左值引用和右值引用
文章目录左值和右值什么是左值和右值?举例说明左值引用和右值引用什么是左值引用和右值引用?左值和右值的转换右值变左值通过右值引用&&通过引用const &通过通用转换 forward左值和右值什么是左值和右值?按照我们常规理解左值就是在等号左边的值,右值是等号右边的值。如果你要这么理解,你就会发现遇到++i或i++这一类的语句你就开始混乱了!其实左值和右值是我们习惯性的叫法,他的全拼应该是:左值是:locator value(可寻址的数据)右值是:read value(不可原创 2022-05-04 12:17:06 · 4257 阅读 · 1 评论 -
浅拷贝与深拷贝
文章目录拷贝构造深浅拷贝理想状态常规出错状态(浅拷贝)使用深拷贝拷贝构造构造函数分为很多种,默认构造,拷贝构造,赋值构造等重点区分拷贝构造和赋值构造:拷贝构造和赋值构造都发生在用一个类的某个对象去给另一个对象赋值。最大的不同是:拷贝构造发生在初始化时,赋值构造不是在初始化赋值。可以查看该链接区分。深浅拷贝理想状态正常的拷贝都是通过值拷贝,如下代码:class A{private: int a_; int b_;public: A(A& ob):a_(ob.a_),b_原创 2022-05-03 19:06:45 · 340 阅读 · 0 评论 -
c++ 的一些预定义宏以及宏嵌套展开规则
文章目录C标准中的一些预定义宏C预定义宏#line和#error#pragma (Para)#pragma message 参数。#pragma code_seg#pragma once (比较常用)#pragma hdrstop#pragma resource "*.dfm"#pragma warning( disable : 4507 34; once : 4385; error : 164 )#pragma warning(once:4385)#pragma warning(error:164)#p原创 2022-04-28 17:27:06 · 1894 阅读 · 0 评论 -
c++带颜色输出到屏幕的颜色编码
文章目录格式格式printf("\033[字背景颜色;字体颜色m 字符串 \033[0m" );例子:printf("\033[1m\033[45;33m HELLO_WORLD \033[0m\n");颜色代码: QUOTE: 字背景颜色范围: 40--49 字颜色: 30—39 40: 黑 30: 黑 41: 红原创 2022-04-25 21:53:10 · 3438 阅读 · 1 评论 -
limits.h中常用的宏
文章目录limit常用宏limit常用宏****limits.h - implementation dependent values** Copyright (c) Microsoft Corporation. All rights reserved.**Purpose:* Contains defines for a number of implementation dependent values* which are commonly used原创 2022-04-24 20:56:02 · 145 阅读 · 0 评论 -
C++中引用和指针的区别
C++中引用和指针的区别在C语言中我们学习过指针,这是C语言最具有魅力的一个操作方法。有机会我会出一期C指针的用法,不过C指针的妙用绝对不是一个人能道尽的。这一期我主要介绍一下C++中的**引用**和**指针**的区别:#####直接理解先来一枚直接能让你理解的炸弹。从根本上看,指针就是指针指向内容的地址。他的定义和初始化时可以分开的:int a = 3;int *p = a;指针p就是整型a的地址。而引用的定义和初始化是一步到位的:int &R=a;引用就是我们理解的”原创 2021-06-18 20:04:48 · 134 阅读 · 0 评论 -
c++为什么要搞一个nullptr代替NULL表示空指针?
空指针nullptrc中使用NULL代表空指针以及数字0的,能够为什么c++中又要多出来nullptr来表示空指针,难道仅仅就是为了和c语言做一个区分(yay:我不是你,我比你高级!)?原创 2022-04-04 17:36:43 · 664 阅读 · 0 评论