随笔分类 -  C/C++

摘要:C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来)ifstream: 读操作(输入)的文件类(由istream引申而来)fstream: 可同时读写操作的文件类 (由iostream引申而来)打开文件(Open a file)对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) ,而对这个流对象所做的任何输入输出操作实际就是对该文件所做的操作。要通过一个流对象打开一个文件,我们使用它的成员函数open 阅读全文
posted @ 2014-02-26 12:58 vranger 阅读(1219) 评论(0) 推荐(0)
摘要:类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。静态类成员包括静态数据成员和静态函数成员两部分。一 静态数据成员:类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点:1.静态数据成员的定义。静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。其定义方式与全局变量相同。举例如下:xxx.h文件class base{pri 阅读全文
posted @ 2014-01-21 03:27 vranger 阅读(266) 评论(0) 推荐(0)
摘要:在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和成员函数使用规则,再给出一个实例来加深印象。希望阅读本文可以使读者对类的静态成员变量和成员函数有更为深刻的认识。第一个例子,通过类名调用静态成员函数和非静态成员函数class Point { public: ... 阅读全文
posted @ 2014-01-21 03:25 vranger 阅读(278) 评论(0) 推荐(0)
摘要:二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写?要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型。正确的是:void Func(int array[3][10]);void Func(int array[... 阅读全文
posted @ 2013-12-03 17:33 vranger 阅读(402) 评论(0) 推荐(0)
摘要:(一) 文件中已经定义了M_PI,如下所示,用户可以直接使用;//math.h........................#if defined(_USE_MATH_DEFINES) && !defined(_MATH_DEFINES_DEFINED)#define _MATH_DEFINES_... 阅读全文
posted @ 2013-10-29 23:23 vranger 阅读(1291) 评论(0) 推荐(0)
摘要:五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又 阅读全文
posted @ 2013-10-11 01:43 vranger 阅读(688) 评论(0) 推荐(0)
摘要:在数组或指针定义后未初始化的情况,如: int pInt1[2]; int *pInt2;对其调用往往会出现意想不到的情况(注意:不一定会报错),现在做个小例子,测试一下到底会出现什么情况。(一)VC9.0,Debug模式下调试: 1 #include "stdafx.h" 2 #include 3 #include 4 #include 5 6 using namespace std; 7 int _tmain(int argc, _TCHAR* argv[]) 8 { 9 10 int pInt[2]={0};//数组初始化11 int pInt1[2]; //... 阅读全文
posted @ 2013-10-10 22:12 vranger 阅读(1717) 评论(0) 推荐(0)
摘要:// 1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;//#include class animal{public: // void sleep() { cout0) { cout0, fish breathe"breathe();//"animal breathe" //pFh->breathe();//error pFh->animal::breathe();//"animal breathe" pFh->b 阅读全文
posted @ 2013-06-30 05:16 vranger 阅读(439) 评论(0) 推荐(0)
摘要:转自:http://87656352.blog.163.com/blog/static/444905422009416318247/在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi-Byte C... 阅读全文
posted @ 2013-06-07 02:20 vranger 阅读(246) 评论(0) 推荐(0)
摘要:深入浅出Visual_C动态链接库(Dll)编程,很好的一份学习DLL的资料,看完这个就不用看其他的了。在网上找到的word版本,修改、标注很方便,做了一下整理,和大家一起分享。下载:深入浅出Visual_C动态链接库(Dll)编程.zip 阅读全文
posted @ 2013-05-23 13:33 vranger 阅读(290) 评论(0) 推荐(0)
摘要:最近做了一些VC++动态链接库的封装,碰到一个问题,在 non-mfc dll模式下,如何实现函数重载,网上查找了一些资料,比较少,经过一番的摸索,终于实现了,分享如下:1.问题:要实现swap(int a,int b);swap(float a,float b);两个函数的重载。2.错误的解决方法... 阅读全文
posted @ 2013-05-23 10:53 vranger 阅读(691) 评论(0) 推荐(1)
摘要:#undef #undef 是在后面取消以前定义的宏定义 该指令的形式为 #undef 标识符 其中,标识符是一个宏名称。如果标识符当前没有被定义成一个宏名称,那么就会忽略该指令。 一旦定义预处理器标识符,它将保持已定义状态且在作用域内,直到程序结束或者使用#undef 指令取消定义。 在此程序中,我们将取消在先前程序中对预处理器的定义。 源代码: #define TRACE(x) #if DBG #undef TRACE #define TRACE(x) g_TraceCallback x #else #ifndef TRACE #define TRACE(x) #en... 阅读全文
posted @ 2013-05-22 22:39 vranger 阅读(897) 评论(0) 推荐(0)
摘要:我们希望在构造pt这个对象的同时,传递x坐标和y坐标的值。可以再定义一个构造函数,如例2-8所示。 例2-8 #include <iostream.h> class point { public: int x; int y; point() { x=0; y=0; } point(int a, int b) { x=a; y=b; } void output() { cout<<x<<endl<<y<<endl; } }; void main() { point pt(5,5); pt.output(); } 在这个程序中,有两个构造 阅读全文
posted @ 2013-05-22 22:21 vranger 阅读(813) 评论(0) 推荐(0)
摘要:http://wenku.baidu.com/view/d90e21c658f5f61fb73666e3.html?from_page=view&from_mod=download下面三种定义形式怎么理解?怎么动态分配空间? (1)、int **Ptr; (2)、int *Ptr[ 5 ]; 我更喜... 阅读全文
posted @ 2013-05-08 14:07 vranger 阅读(229) 评论(0) 推荐(0)
摘要:http://www.awflasher.com/blog/archives/939当Adobe、Microsoft、Sun等一系列巨头开始表现出对”开源”的青睐时,”开源”的时代即将到来!最初来自:sinoprise.com/read.php?tid-662-page-e-fpage-1.html... 阅读全文
posted @ 2013-01-10 17:24 vranger 阅读(341) 评论(0) 推荐(0)