摘要:题记:有一些问题,每过一段时间就有新的理解... 聚合对象结构体和类 聚合对象,就是一系列的基本数据类型的组装,在内存中像线型一样紧密摆放,比如结构体就是典型的代表: typedef struct tagPerson{ int age; char address[128]; }PERSON; 如果我
阅读全文
随笔分类 - C/C++
摘要:这篇根据一些文章整理,对移动语义进行详细记录 移动语义 const& 复制构造存在的问题 复制构造在前面的文章中有记录,它的主要一个问题在于使用const &进行常引用,导致被复制的对象不能修改。按照常理来说,一般不需要修改被复制的对象,但在某些情况下却非常有用。首先看个代码: Person mak
阅读全文
摘要:起源:重载引起的问题 春节没事闲下来记录一下,对问题做一个汇总 普通const和non-const的重载选择 如图所示,遇到类似问题,编译器会做出重载选择。const接收的范围比non-const范围大。 临时对象的重载选择 标题一 测试 问题提出:string的引用 对于函数形参,可以使用引用或者
阅读全文
摘要:Chromium除了远近闻名的多进程架构之外,它的多线程模型也相当引人注目的。Chromium的多进程架构是为了解决网页的稳定性问题,而多线程模型则是为了解决网页的卡顿问题。为了达到这个目的,Chromium的多线程模型是基于异步通信的。也就是说,一个线程请求另外一个线程执行一个任务的时候,不需要等
阅读全文
摘要:本系列属于长篇,有兴趣的可以慢慢参看(源于读书笔记和各种资料整理) 解决模板,主要为了C++11中的某些问题做个铺垫,有一点模板基础就可以看完,内容属于高度浓缩概括。 函数模板 一、特化 特化主要解决模板不能解决的一种可能。就好比说普遍问题中的一个特殊问题。特化
阅读全文
摘要:——原创,引用请附带博客地址 2019-12-06 23:42:18 这篇文章分析的还是不行,先暂时放在这以后再更新。 本篇比较长,需要耐心阅读 以一个实际问题开始分析 class Sub{} Sub GetInstance(){ return Sub(); } int main(){ Sub a=
阅读全文
摘要:参考《C++程序设计语言》更新于:2020-06-27 02:31:28 形式A + - * / % 形式B ^ & | ~ ! 形式C = > >= < <= >> >>= << 例:根据标准库学习的一种重载形式 #include "stdafx.h" #include <process.h> #
阅读全文
摘要:说明 顾明思议 左值引用 就是对左值的引用 就是给左值取别名 右值引用 就是对右值的引用 就是给右值取别名 当改变别名是 该值也相应的改变 那么 何以区分哪些是左值哪些是右值呢? 因为申请的变量会在内存中开辟一块地址 左值也叫有特定地址的量 比如: 那么 何么 寄存器中的量又是什么? 通俗的说 寄存
阅读全文
摘要:数组 数组名 数组是内存连续的,数组名代表数组首地址 代码如下: int a[]={2,3,4,5,12,33}; 数组名a表示当前数组的首地址,但是a[0]就不是地址,这一点很不同。 对于地址,可以使用+号进行运算,比如a+2,表示地址向前偏移两个位置,即等价于&a[2],因此,对于数组遍历,有两
阅读全文
摘要:转 在面试中,常会考到结构体的对齐方式,因此对其进行总结。 1、在没有#pragma pack宏的情况下 原则1:每个成员按类型的大小对齐,即相对于结构体地址的成员地址能被类型大小整除.并且结构体的大小(sizeof(A))必须为成员所含类型中最大值(sizeof(double))的整数倍,不够就补
阅读全文
摘要:————这篇文章会随着学习逐步更新,同时和Java接口回调配合记录———— 回调函数 回调函数是一个时时听到的概念,比如在windows API编程时遇到的WinProc函数,就是我们编写而由操作系统调用的函数。现在,我们需要慢慢又详细的记录一下这个问题。 库与使用者的问题 在开始之前,首先我们想像
阅读全文
摘要:什么是可变参数? 可变参数就是指参数个数不确定,举一例即可明白。 实现一个函数计算整数和,形式如下 如代码所示,无法确定究竟传进来多少个参数,可能2个,3个,4个等等,但是却要求sum函数针对各种可能都能求得结果。 函数堆栈 C语言函数的参数是从右往左压入堆栈,有以下几个特点: 栈底在高地址,栈顶在
阅读全文
摘要:extern "C"用于C++程序调用C形式的函数 举例说明,先定义一个C的头文件和实现文件,内容如下: 分析: #ifdef __cplusplus说明如果定义宏__cplusplus就采用extern "C",假如在C语言的环境下编译,__cplusplus肯定是没有定义的,所以extern "
阅读全文
摘要:空指针、NULL指针、零指针 什么是空指针常量 0、0L、'\0'、3 - 3、0 * 17 (它们都是“integer constant expression”)以及 (void*)0 (我觉得(void*)0应该算是一个空指针吧,更恰当一点)等都是空指针常量(注意 (char*) 0 不叫空指针
阅读全文
摘要:1、_stdcall是Pascal程序的缺省调用方式,通常用于Win32 API中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。 2、C调用约定(即用__cdecl关键字说明)按从右至左的顺序压参数入栈,由调用者
阅读全文
摘要:VC++编译器中一些常见precompiling 指令介绍 我们在利用vc6.0 project wizard生成的代码中,经常看到大量的precompiling指令。本文讲解了常见的这些指令的作用 1.#pragma once 这个指令是vc编译器特有的指令,其作用是指对该头文件只编译一次。其作用
阅读全文
摘要:C/C++编译器-cl.exe的命令选项 和在IDE中编译相比,命令行模式编译速度更快,并可以避免被IDE产生的一些附加信息所干扰,本文将介绍微软C/C++编译器命令行模式设定和用法。 1、设置环境变量: PATH=C:\Program Files\Microsoft Visual Studio 8
阅读全文
摘要:类模板一些比较重要的点 一、当一个类加上模板之后,它的类型已经不再是单纯的类,而是一个类家族 比如,有一个类class Person,在没有模板化前,它的类型名是Person,加上模板后就变成Person<T>,已经不再单纯是只是一个类。
阅读全文