
C++
懒先森要努力
最淡的墨水也胜于最强的记忆
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《程序员面试宝典》C++部分笔记整理
不怎样的一本书,具体表现为:1)该详细讲解的地方,或者一笔带过或者讲得不全面或者讲些不相关内容;2)该略过的地方,反而详细起来;3)有一部分错误,如sizeof不计算static变量的大小之类的。虽说如此,收获还是有的——知道了在笔试中常见的知识点。这里的笔记就是对我不熟悉或者理解不全面的知识点去Google和查书而来的。C++的关键字1. 使用extern "C"的理由函转载 2013-06-22 18:41:13 · 573 阅读 · 0 评论 -
C++中虚析构函数的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do转载 2013-06-22 20:33:40 · 504 阅读 · 0 评论 -
虚函数与虚继承寻踪
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特性,熟悉C++的人对此应该不会有太多异议。C语言提供的struct,顶多算得上对数据的简单封装,而C++的引入把struct“升级”为class,使得面向对象的概念更加强大。继承机制解决了对象复用的问题,然而多重继承又会产生成员冲突的问题,虚继承在我看来更像是一种“不得已”的解决方案。多态让对象具有了运行时特性,并且它是软件设计复用的转载 2013-06-26 19:00:49 · 465 阅读 · 0 评论 -
C++ 初始化列表
C++ 初始化列表何谓初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的克访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。struct foo{ string name ;转载 2013-06-26 20:04:22 · 447 阅读 · 0 评论 -
C++编码规范
1. 代码风格1.1 空格制表符1.2 单行长度1.3 函数长度1.4 字体选择1.5 大括号1.6 指针和引用位置2. 命名规范2.1 类2.2 函数2.3 结构体2.4 变量3. 文件结构3.1 头文件3.2 文件组织格式4. 注释格式4.1 Doxygen常用语法4.1.1转载 2013-08-23 13:57:57 · 1448 阅读 · 1 评论 -
面向对象的3个基本要素和5个基本设计原则(整理)
面向对象的3个基本要素:封装、继承、多态 面向对象的5个基本设计原则: 单一职责原则(Single-Resposibility Principle) 其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它变化的原因就越多转载 2013-09-16 09:13:29 · 1068 阅读 · 0 评论 -
浮点数在内存中的表示
单精度浮点数: 1位符号位 8位阶码位 23位尾数双精度浮点数: 1位符号位 8位阶码位 52位尾数 实数在内存中以规范化的浮点数存放,包括数符、阶码、尾数。数的精度取决于尾数的位数。比如32位机上float型为23位 double型为52位。单精度float型存储在内存中的大小为4个字节,即32位。浮点表示的一般形式为:R=M*转载 2013-09-17 10:50:07 · 679 阅读 · 0 评论 -
C++宏定义详解
一、#define的基本用法 #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。1 #define命令剖析1转载 2013-10-03 20:36:36 · 657 阅读 · 0 评论 -
内存管理GetMemory
1.关于动态申请内存的问题 出现率极高程序的局部变量存在于(栈)中程序的全局变量存在于(静态存储区)中程序动态申请的数据存在于(堆)中[cpp] view plaincopyprint?void GetMemory(char *p) { p = (char *)malloc(100)转载 2013-10-04 09:31:31 · 920 阅读 · 0 评论 -
12个有趣的C语言面试题
摘要:12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个! 1.gets()函数问:请找出下面代码里的问题:#include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); p转载 2013-10-03 22:11:32 · 956 阅读 · 0 评论 -
C++内存管理
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C转载 2013-05-02 15:01:30 · 597 阅读 · 0 评论 -
Big Endian与Little Endian区别
Big Endian与Little Endian区别 1. 什么是Big Endian和Little Endian? 在设计计算机系统的时候,有两种处理内存中数据的方法。一种叫为little-endian,存放在内存中最低位的数值是来自数据的最右边部分(也就是数据的最低位部分)。比如一个16进制数字0x12345678,在内存存放的方式如下:转载 2013-04-19 18:36:42 · 551 阅读 · 0 评论 -
signed unsigned 的数值概念
1. signed 和 unsigned 是两种类型,对存储器中的内容作不同的数值上的解释,可以理解为一个解码过程(signed, unsigned 控制存储空间中最高位的使用,char, int等控制访问的字节数):如:(signed char)0x81的数学上的值是-127(或者十六进制表示为-7F,符号和进制无关,所以存储的内容到数学上的值,需要一个理解上的转转载 2013-04-19 18:23:14 · 831 阅读 · 0 评论 -
delete和delete[] 的区别
分为两种情况:(1) 为基本数据类型分配和回收空间;(2) 为自定义类型分配和回收空间。 C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 对于一个数组,delete和delete[]都可以释放内存空间,但是只有delete[]才会调用每一个数组元素的析构函数,而d转载 2013-02-25 10:50:51 · 873 阅读 · 0 评论 -
malloc/free和new/delete的区别
相同点:(1)都可用于申请动态内存和释放内存(2)既然new/delete的功能完全覆盖了malloc/free,为什么C++还保留malloc/free呢?因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。如果用delete释放“malloc申请的动态内存”,理论上转载 2013-02-26 09:01:58 · 300 阅读 · 0 评论 -
数组指针和指针数组的区别
数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;转载 2013-02-27 10:49:29 · 273 阅读 · 0 评论 -
static用法小结
static用法小结static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数下面就这三种使用方式及注意事项分别说明一、局部静态变量在C/C++中, 局部变量按照存储转载 2013-03-01 10:12:05 · 296 阅读 · 0 评论 -
指向指针的指针
理解:指向指针的指针,存储的是指针的地址。比如对于指针p和指向指针的指针q,可以p=&q一. 回顾指针概念:今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧!当我们程序如下申明变量:short int i;char a;short int * pi;程序会在内存某地址空间上为各变量开辟空间,如下图所示。内存地址→6 7转载 2013-03-02 14:07:44 · 337 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。转载 2013-04-22 17:41:55 · 586 阅读 · 0 评论 -
C 关于unsigned int compzero = ~0;
unsigned int zero = 0; unsigned int compzero = 0xFFFF; /*1's complement of zero */ 对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下: unsigned int compzero = ~0; 为什么啊?网友回复:unsigned int comp转载 2013-04-24 10:40:09 · 1841 阅读 · 0 评论 -
C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。1 static_cast用法:static_cast ( expression ) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:①用于类层次结构中基类和子类转载 2013-04-16 21:17:27 · 425 阅读 · 0 评论 -
关于字符串指针不可修改的问题
C/C++ codechar*m ="hello"; *(m+1) ='s'; for(;*m !='\0';m++){ printf("%c\n",*m); }但是出运行时错误。----------------------------------------------------------我用数组下标的方式是可以修改的:C/C++ code转载 2013-09-20 21:06:39 · 651 阅读 · 0 评论