C++
文章平均质量分 79
KevinVan4
这个作者很懒,什么都没留下…
展开
-
指针和堆的内存分配
先来介绍一下指针: 指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类型就有大小,在达内的服务器上或者普通的PC机上,都是4个字节大小,里边只是存储了一个变量的地址而已。不管什么类型的指针,char * ,int * ,int (*) ,string * ,float * ,都是说明了本指针所指向的地址空间是什么类型而已,了解了这个基本上所有的问题原创 2013-01-15 12:23:15 · 727 阅读 · 2 评论 -
sizeof VS strlen
一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配原创 2013-01-15 12:36:07 · 295 阅读 · 0 评论 -
析构函数剖析二
建议: A. 不要对局部对象显式地调用析构函数,在创建该局部对象的代码块的 } 处,析构函数会自动被调用。这是语言所保证的;自动发生。没有办法阻止它。而两次调用同一个对象的析构函数,调用两次意味着第二次会试图清理已经被清理过了的,根本不再存在的数据!这是件会导致运行时错误的问题,并且在编译的时候不会告诉你! 但是也会有一些时候,我们想要将一个局部对象在被创建的代码块 }原创 2013-01-15 12:30:49 · 339 阅读 · 0 评论 -
ifstream&ofstream
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>)原创 2013-01-15 12:27:09 · 302 阅读 · 0 评论 -
友元函数
友元函数(friend function)1. 什么是友元函数? 一个类的私有数据成员通常只能由类的函数成员来访问,而友元函数可以访问类的私有数据成员,也能访问其保护成员2. 友元函数的用处体现在哪里? a.使用友元函数可提高性能,如:用友元函数重载操作符和生成迭代器类 b.用友元函数可以访问两个或多个类的私有数据,较其它方法使人们更容易理解程序的逻辑关系3原创 2013-01-15 12:25:53 · 486 阅读 · 0 评论 -
指针数组&数组指针
(1)int *ptr;//指针所指向的类型是int (2)char *ptr;//指针所指向的的类型是char (3)int **ptr;//指针所指向的的类型是int*(也就是一个int * 型指针) (4)int(*ptr)[3];//指针所指向的的类型是int()[3] //二维指针的声明1. 指针数组:一个数组里存放的都是同一个类型的指针——一个数组原创 2013-01-15 12:24:20 · 266 阅读 · 0 评论 -
析构函数剖析三——虚析构函数
析构函数的作用是在对象撤销之前做必要的“清理现场”的工作。当派生类的对象从内存中撤销时一般先调用派生类的析构函数,然后再调用基类的析构函数。 但是,如果用new运算符建立了临时对象,若基类中有析构函数,并且定义了一个指向该基类的指针变量(即基类指针指向子类对象)。在程序用带指针参数的delete运算符撤销对象时,会发生一个情况: 系统会只执行基类的析构函数,而不执行派生类的析构函数。原创 2013-01-15 12:31:40 · 388 阅读 · 0 评论 -
析构函数剖析一
析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。 显式的调用析构函数是一件非常危险的事情,我们自己所谓的显式调用析构函数,实际上只是调用了一个成员函数,并没有真正意原创 2013-01-15 12:30:04 · 348 阅读 · 0 评论 -
显式类型转换
将一种类型转换为另一种类型,转换后的变量,它的内部数据存储方式也随之发生改变,有四个显示的类型转换函数,reinterpret_cast,const_cast,static_cast,dynamic_cast.前面三个是在编译期间实现转换的,最后一个是在运行时实现转换,还可返回转换成功与否标志。 double d=3.2; int i=d;//隐式转换,i=3 dou原创 2013-01-15 12:29:19 · 419 阅读 · 0 评论 -
虚函数VS纯虚函数
1.作用 定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。定义他是为了实现一个接口,起到一个规范的作用,规范继承这个。类的程序员必须实现这个函数。2.关于实例化一个类:有纯虚函数的类是不可能生成类对象的,如果没有纯虚函数则可以。比如: c原创 2013-01-15 12:28:11 · 393 阅读 · 0 评论 -
const 作用
使用const的好处在于它允许指定一种语意上的约束------某种对象不能被修改--------编译器具体来实施这种约束。一、const用于定义常量。 例如:const int N = 100;const int M = 200; 这样程序中只要用到 N、M就分别代表为整型100、200,N、M为一常量,在程序中不可改变。 用const定义常量不仅能方便原创 2013-01-15 12:35:04 · 397 阅读 · 0 评论