c/c++ 复习
文章平均质量分 69
Y_23k_bug
这个作者很懒,什么都没留下…
展开
-
c\c++复习基础要点09---关键字explicit c++四种类型转换
1. 关键字explicit通过关键字explicit的作用,我们可以禁止“单参数构造函数”被用于自动类别转换。在 C++ 中, 如果一个类有只有一个参数的构造函数,C++ 允许一种特殊的声明类变量的方式。在这种情况下,可以直接将一个对应于构造函数参数类型的数据直接赋值给类变量,编译器在编译时会自动进行类型转换,将对应于构造函数参数类型的数据转换为类的对象。如果在构造函数前加上原创 2013-09-30 20:17:32 · 1332 阅读 · 0 评论 -
c\c++ 复习基础要点07---内存存储 大端模式、小端模式
首先不管大端法还是小端法存储,计算机在内存存放数据的顺序都是从低地址到高地址。所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址。 若首先取高字节的数据放在低地址,则是大端法;若首先取低字节的数据存放在低地址,则是小端; 例如数据0x1234567 (左边是高字节,右边是低字节) 大端法存放:内存地址依次为: 0x0001原创 2013-09-29 00:24:13 · 1753 阅读 · 0 评论 -
c\c++ 复习基础要点06---联合体
联合体union 当多个数据需要共享内存或者多个数据每次只取其一的时候,可以利用联合体。1. 联合体是个结构;2. 它的所有成员对于基地址的偏移量都为0;3. 联合体的结构空间要大到足够容纳最“宽”的成员;4. 其对齐方式要适合其中所有成员; 由于联合体中的所有成员是共享一段内存的,因此每个成员存放的首地址相对与联合体变量的地原创 2013-09-28 19:12:14 · 1154 阅读 · 1 评论 -
c\c++复习基础要点05---assert断言及其自定义实现
assert宏: assert宏其实很重要,对于调试程序来说。 assert宏的原型定义在assert.h中 #include void assert(int exp); assert的作用是计算表达式exp,如果其值为假(即为0),那么它先打印一条出错信息,然后通过调用abort来终止程序运行。 assert就是为了确定一个条件为真,如果不为真,则给出出原创 2013-09-28 15:12:53 · 2386 阅读 · 0 评论 -
c\c++ 复习基础要点04 C与C++程序的内存结构的不同
C与C++内存机制的不同 C与C++的内存机制虽然非常相似,但还是有些不同的地方 一.C内存机制1. 栈(Stack):栈内存只在程序运行时出现,在函数内部使用的变量、函数的参数以及返回值将使用栈空间,栈空间由编译器自动分配和释放。2. 堆(Heep):由malloc()/calloc()/realloc分配空间,free()释放所申请的空间。如原创 2013-09-28 00:51:41 · 1411 阅读 · 0 评论 -
c++复习基础要点03 虚析构函数、虚函数表
1.虚析构函数的作用: 当基类对象指针通过new动态创建一个子类的对象时,通过该指针释放子类对象时,如果基类的析构函数不是虚函数,则释放该对象时只会调用基类的析构函数而不会调用子类析构函数。这样子类释放对象时就无法释放已分配的资源。如果基类的析构函数为虚函数,则在基类对象指针去释放子类对象时,就会先调用子类的析构函数,在调用基类的析构函数: #includeusing nam原创 2013-09-27 17:04:14 · 1230 阅读 · 0 评论 -
c++复习基础要点02 虚函数与模板 与static inline是否共存
1. 虚函数能否定义为模板函数当一个类有虚函数时,它一定有一个虚表,用来纪录每个虚函数的实际地址。这也就是说这个虚表的大小是在编译期就确定了的。有多少个虚函数,虚表就纪录几个。 类中的模板函数函数会根据具体的类型而实例化,这也就是说这个模板函数会实例多少个函数出来是不知道的,这样,虚表的大小就不好确定了。所以在现有的编译器的情况下,虚函数不能是模板函数。当然以后可能会原创 2013-09-27 14:55:47 · 1976 阅读 · 0 评论 -
c/c++ 复习基础要点01-const指针、指针函数 函数指针、new/delete与malloc/free区别与联系
1. 引用本身是有指针实现的:引用为只读指针例子: int d=123; int& e=d; //引用 int * const e=d; //只读指针,e指向d,不可修改e指向别的变量 2. const修饰指针问题2.1.指向const对象的指针: const double *cptr;原创 2013-09-27 01:02:44 · 2279 阅读 · 0 评论 -
C指针数组和数组指针的内存布局
一、指针数组和数组指针的内存布局初学者总是分不出指针数组与数组指针的区别。其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。下面到底哪个是数组指针,哪个是指针数转载 2013-10-09 23:42:57 · 1360 阅读 · 0 评论 -
c\c++复习基础要点16----枚举类型
枚举类型: 语法格式: enum 枚举类型名 {变量值列表};例如: enum Weekday{sun, mon, tue, wed, thu, fri, set};声明了枚举类型后,就可以定义枚举类型的变量了。定义枚举变量的语法格式为: enum 枚举类型名 标示符;或枚举类型名 标示符; 例如: enu原创 2013-10-07 18:06:19 · 1356 阅读 · 0 评论 -
c\c++复习基础要点14----容器list
list使用一个双向链表来管理元素。使用list必须含入头文件#include list的能力:list的内部结构和vector或deque截然不同,所以在几个主要方面与vector和deque存在明显区别:1. list不支持随机存取。如果你要存取5个元素,就得顺着串链一一爬过前4个元素。所以在list中随机遍历任何元素,是很缓慢的行为。2. 任何原创 2013-10-06 22:20:12 · 1106 阅读 · 0 评论 -
c\c++复习基础要点12---容器vector
容器vector:1.vector的能力:vector使用动态数组实现的,所以元素之间总是存在某种顺序,所以vectors是一种有序群集。vector支持随机存取,因此只要知道位置,你可以在常数时间内存取任何元素。在末端附加或删除元素时,vector的性能相当好,可是如果你在前端或中部安插或删除元素,性能就不怎么样了,因为操作点之后的每个元素都必须移到另一个位置,而每一次移动都得调用赋原创 2013-10-05 23:03:01 · 1419 阅读 · 0 评论 -
c\c++复习基础要点15----c++运行时类型识别 dynamic_cast typeid type_info
C++提供了两个操作符合一个类来实现运行时类型识别机制,它们是操作符dynamic_cast、操作符typeid和类type_info dynamic_cast操作符: dynamic_cast操作符可以将基类的指针安全地向下转型为派生类指针。语法格式: dynamic_cast(基类指针)安全转型是指,当基类指针实际指向的对象本身就是该派生类对象,或是由原创 2013-10-07 01:06:34 · 2146 阅读 · 0 评论 -
c\c++复习基础要点13---容器deque
容器deque和vector非常相似。它也采用动态数组来管理元素,提供随机存取,并有着和vector几乎一模一样的接口。不同的是deque的动态数组头尾都是开放,因此能再头尾两端进行快速安插和删除。 deque与vector不同的接口: c.push_front(elem); 在头部插入elem的一个副本 c.pop_front(); 移除头部元素原创 2013-10-06 20:41:13 · 1165 阅读 · 0 评论 -
c\c++复习基础要点11----对象的浅拷贝和深拷贝
默认的拷贝构造函数与对象的浅拷贝问题 如果定义类时,没有为其声明拷贝构造函数,则编译器会为类自动生成一个拷贝构造函数,这个由编译器自动生成的拷贝构造函数称为默认的拷贝构造函数。默认的拷贝构造函数的功能就是把参数对象内容按字节拷贝给当前正在创建的对象。 对象的浅拷贝: #includeusing namespace std; class A{ pub原创 2013-10-04 21:23:56 · 1234 阅读 · 0 评论 -
c\c++复习基础要点10---智能指针
C++标准库提供的auto_ptr是一种智能指针,帮助程序员防止“被异常抛出时发生资源泄露”。 auto_ptr的设计动机:1. 获得一些资源2. 执行一些动作3. 释放获取的资源如果一开始获取的资源被绑定于局部对象身上,当函数退出时,它们的析构函数被调用,从而自动释放这些资源,然而事情并不是总是如此顺利,如果资源是以显式手法获得,而且没原创 2013-10-03 23:02:07 · 1122 阅读 · 0 评论 -
c\c++复习基础要点08--c++单例模式
单例模式有许多种实现方法,在c++中,甚至可以直接用一个全局变量做到这一点,但是这样的代码显得不优雅。使用全局对象能够保证方便地访问实例,但是不能保证只声明一个对象——也就是说除了一个全局实例外,仍然能创建相同类的本地实例。 定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态函数获取该实例。 定义: class CSingleton{ p原创 2013-09-29 23:34:57 · 1070 阅读 · 0 评论