C/C++
边十依云
这个作者很懒,什么都没留下…
展开
-
C++ 语法 : C/C++中static关键字作用总结
1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; // global variablevoid msg(){转载 2016-07-22 15:00:19 · 248 阅读 · 0 评论 -
C++中的空类,默认产生哪些类成员函数
class Empty{ public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* operator&(); // 取转载 2016-08-21 17:13:55 · 622 阅读 · 0 评论 -
c++对象内存模型【内存布局】
#类中的元素0. 成员变量 1. 成员函数 2. 静态成员变量 3. 静态成员函数 4. 虚函数 5. 纯虚函数#影响对象大小的因素0. 成员变量 1. 虚函数表指针(_vftptr) 2. 虚基类表指针(_vbtptr) 3. 内存对齐_vftptr、_vbtptr的初始化由对象的构造函数, 赋值运算符自动完成;对象生命转载 2016-08-21 16:22:52 · 283 阅读 · 0 评论 -
C++ 语法 : volatile关键字详解
C/C++中volatile关键字详解 1. 为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的 memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile specifier is a转载 2016-07-19 18:44:15 · 362 阅读 · 0 评论 -
C++语法 :C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plain copyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。转载 2016-07-19 17:36:35 · 382 阅读 · 0 评论 -
C++ 语法:C++变量声明和定义的区别
我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益)变量的声明有两种情况:1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义转载 2016-07-19 15:10:12 · 654 阅读 · 0 评论 -
C++ 语法 :#pragma once 与 #ifndef ...#define ...#endif
111#ifndef ...#define ...#endif和#pragma once都是为了解决同一个问题的,就是防止头文件被重复包含和编译。这种宏定义都是作用于编译阶段,属于条件编译,控制编译流,可以让我们按照想要的方式来编译我们的代码。 #pragma once用来防止某个头文件被多次include; #ifndef,#define,#endif用来防止转载 2016-07-19 15:28:35 · 460 阅读 · 0 评论 -
C++语法 :C++中的头文件和源文件
一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西转载 2016-07-19 15:03:06 · 575 阅读 · 0 评论 -
C++ 语法 1. struct 内存的对齐原则
struct/class以及union内存对齐四个原则:1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节, 则要从4的整数倍地址开始存储),基本类型不包括struct/cl转载 2016-07-18 19:53:04 · 464 阅读 · 0 评论 -
C++语法 : 内存池技术的原理与实现
序言 最近在网上看到了几篇篇讲述内存池技术的文章,有一篇是有IBM中国研发中心的人写的,写的不错~~文章地址在本篇blog最后。原文的讲述比我的要清晰很多,我在这只是把我的一些理解和遇到的一些问题和大家分享一下~~一、为什么要使用内存池技术呢 主要有两个原因:1、减少new、delete次数,减少运行时间;2、避免内存碎片。 1、效率 c语言中使用m转载 2016-07-25 23:00:27 · 463 阅读 · 0 评论 -
C++语法 : 堆和栈区别 生长方向
C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。C++内存区域分为5个区域。分别是堆,栈,自由存储区,全局/静态存储区和常量存储区。栈:由编译器在需要的时候分配,在不需要的时候自动清除的变量存储区。里面通常是局部变量,函数参数等。堆:由n转载 2016-07-24 15:32:23 · 1154 阅读 · 0 评论 -
C++语法 :C/C++ 内存布局详解(经典)
一个由C/C++编译的程序除了存放函数二进制代码的程序代码段(code段)外,数据占用的内存大致分为以下几个部分:1、栈区(stack) 存放局部变量、函数参数、返回数据、返回地址等。系统自动分配释放 ,其操作方式类似于数据结构中的栈。需要注意的有三点: 第一, 退栈后销毁进栈时定义数据,请看下面这段。char* fun(char转载 2016-07-24 15:06:22 · 352 阅读 · 0 评论 -
C++ - 类的成员变量 声明顺序 与 初始化顺序 相同
本文地址: http://blog.csdn.net/caroline_wendy/article/details/23845027类成员的默认初始化顺序是按照声明顺序进行, 如果使用初始化列表初始化成员变量, 则必须按照成员变量的声明顺序进行;否则, 在变量之间交替赋值时, 会产生, 未初始化的变量去赋值其他变量;同时GCC, 也会发出警告, 如: 'cl转载 2016-08-21 18:06:47 · 1046 阅读 · 0 评论