11 2012 档案

C++虚函数与虚函数表
摘要: 阅读全文

posted @ 2012-11-22 15:00 凌峰布衣 阅读(151) 评论(0) 推荐(0) 编辑

static关键字的使用
摘要:1 一、面向过程设计中的static 2 1、静态全局变量 3 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。 4 静态全局变量有以下特点: 5 该变量在全局数据区分配内存; 6 未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化); 7 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的; 8 静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量。对于一个完整的程序,在内存中的分布情况如下图: 9 代码区10 全局数据区11 堆区12 栈区13 一般程序的由ne... 阅读全文

posted @ 2012-11-07 19:03 凌峰布衣 阅读(214) 评论(0) 推荐(0) 编辑

数据转换
摘要:1 #ifndef CONVERTTOOL_H_ 2 #define CONVERTTOOL_H_ 3 #include "isEndian.h" 4 #include <string.h> 5 #include <stdlib.h> 6 int getCharFromInt(int v,char buf[]){ 7 int i=0; 8 if(!isEndian()){ 9 for (int i = 0; i < sizeof(buf); i++){10 buf[i] = (unsigned char) (v & 0x000000ff 阅读全文

posted @ 2012-11-06 15:24 凌峰布衣 阅读(588) 评论(0) 推荐(0) 编辑

linux下开机自动加载驱动模块
摘要:1 环境:ubuntu10.10 2 3 模块名:pciAdDrv.ko 4 5 步骤:1 打开下面文件 6 7 vi /etc/moudles 添加模块名称: pciAdDrv(注意不要后缀) 8 9 2 下来就是将模块放到对应的位置,注意将驱动按类别放,我的属于pci就将它放在了drivers下的pci下。10 11 /lib/modules/2.6.35-22-generic/kernel/drivers/pci/12 13 验证:以上操作完成后重启机器,在终端通过命令lsmod 就可以看到已经加载的模块了不知道... 阅读全文

posted @ 2012-11-06 13:32 凌峰布衣 阅读(7029) 评论(0) 推荐(0) 编辑

const 详解
摘要:const用法详解面向对象是C++的重要特性. 但是c++在c的基础上新增加的几点优化也是很耀眼的就const直接可以取代c中的#define以下几点很重要,学不好后果也也很严重const1. 限定符声明变量只能被读 const int i=5; int j=0; ... i=j; //非法,导致编译错误 j=i; //合法2. 必须初始化 const int i=5; //合法 const int j; //非法,导致编译错误3. 在另一连接文件中引用const常量 extern const int i; //合法 extern const int j=10; //非法,常... 阅读全文

posted @ 2012-11-02 18:51 凌峰布衣 阅读(272) 评论(0) 推荐(0) 编辑

引用和指针
摘要:1 引用和指针使用原则: 2 1.在可以用引用的情况下,不要用指针; 3 2.引用不允许重新赋值.,当使用一个变量指向不同的对象时,必须用指针; 4 3.引用不允许为空,当存在对象为空时,必须使用指针。 5 引用说明: 6 (1) double & rr=1; 等价与 double temp; temp=double(1); double & rr=temp; 7 (2) int *a; int * & p=a; int b=8; p=&b; //正确,指针变量的引用 8 void & a=3; //不正确,没有变量或对象的类型是void 9 int & 阅读全文

posted @ 2012-11-02 18:45 凌峰布衣 阅读(303) 评论(0) 推荐(0) 编辑

typedef和#define 详解
摘要:1 typedef语句是在编译过程中被解析的,而#define是在编译之前的预处理过程中被解析的。#define所进行的只是对自定义别名的简单替换, 而typedef则要灵活得多。总的来说,typedef可以做到#define所能做的所有事情,而且可以做得更好。 3 #define比较特别的一点是它可以用一个自定义的符号名去代替一个value并且可以定义一个类似于函数的宏,而typedef不可以。 但是在C++中并不推荐这么做,因为这些行为会导致许多难以察觉的问题,一般用const常量和inline函数来实现#define的这种功能。 5 现在来看一下typedef和#define的重要... 阅读全文

posted @ 2012-11-02 18:32 凌峰布衣 阅读(2306) 评论(0) 推荐(0) 编辑

重载、覆盖和覆写的区别
摘要:Overload:1、定义:1)方法名相同;2)参数不同,体现在参数个数和类型上的不同2、范围:发生在同个类中Override:1、定义:1)方法名相同;2)参数相同;3)返回值类型相同2、范围:发生在子类中注意:Override时,方法的访问权限不能更严格 1 方法重载(Overload): 2 方法重载:同一个类中不能有两个标识相同的成员。对于方法来说,方法名和参数列表共同组成了方法的标识,因此在一个类中允许存在两个相同名称的方法, 只要方法的参数列表不完全相同(参数数量或参数类型不同)。这时称该方法具有同名的重载形式,即方法名相同而标识不同。 3 方法名:相同 4 参数列表:必须不同.. 阅读全文

posted @ 2012-11-02 17:27 凌峰布衣 阅读(1134) 评论(0) 推荐(0) 编辑

virtual-->纯虚类
摘要:1 1.含有一个纯虚函数的类是纯虚类 2 2.纯虚类可以有成员变量 3 3.纯虚类可以有普通的成员函数(包括普通成员函数和虚拟成员函数) 4 3.纯虚类可不可以又带有参数的构造函数? (可以) 5 4.可不可以在纯虚类的派生类的构造函数中显式调用纯虚类的带参数构造函数(可以)#include <iostream>using namespace std;class A{ public: A(string & name); ~A(); virtual void abmethod(int value) = 0; private: std::string name_;};A::A( 阅读全文

posted @ 2012-11-02 16:02 凌峰布衣 阅读(378) 评论(0) 推荐(0) 编辑

virtual-->Class
摘要:虚基类的特点: 虚基类构造函数的参数必须由最新派生出来的类负责初始化(即使不是直接继承); 虚基类的构造函数先于非虚基类的构造函数执行。如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。C++提供虚基类(virtual base class )的方法,使得在继承间接共同基类时只保留一份成员。为了保证虚基类在派生类中只继承一次,应当在该基类的所有直接派生类中声明为虚基类。否则仍然会出现对基类的多次继承。 1 #include <iostream> 2 using namespace std... 阅读全文

posted @ 2012-11-02 15:17 凌峰布衣 阅读(736) 评论(0) 推荐(0) 编辑

virtual-->function
摘要:如果基类和派生类都定义了"相同名称的成员函数",那么通过对象指针调用成员函数时,到底调用哪个函数,要根据该指针的原始类型而定,而不是视指针实际所指的对象类型而定。 如果用了虚函数,这些情况就不存在了。虚函数的总结: 1.如果想在派生类中重新定义一个成员函数,那么就应该在基类中把该函数设为"virtual"。 2.以单一指令调用不同函数(这句话不好理解,下面会解释),这种性质就是"多态"。 3.虚函数是C++语言的多态性质和动态绑定的关键。 4.既然抽象类中的虚函数不打算被调用,我们就不应该定义它,应该把它设为纯虚函数(在函数声明后加上 阅读全文

posted @ 2012-11-02 14:25 凌峰布衣 阅读(267) 评论(0) 推荐(0) 编辑

指针-->(数组)
摘要:1 #include <iostream> 2 #include <stdlib.h> 3 #include <stdio.h> 4 #include <string.h> 5 6 7 using namespace std; 8 9 int main(){10 cout<<"数组指针测试:--------"<<endl;11 int (*p)[2];12 13 int a[3][2]={{1,2},{3,4},{5,6}};14 15 // p =&a[0];16 p = a;17 18 co 阅读全文

posted @ 2012-11-02 13:23 凌峰布衣 阅读(217) 评论(0) 推荐(0) 编辑

指针-->(纯指针)
摘要:1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 6 using namespace std; 7 8 int main(){ 9 char p[20]="you are a student!";10 int *a = (int *)p;11 int **b = &a;12 char *c;13 c = p;14 cout<<"*b-> "<< 阅读全文

posted @ 2012-11-02 10:49 凌峰布衣 阅读(209) 评论(0) 推荐(0) 编辑

单向链表->单向循环链表
摘要:1 #include <stdio.h> 2 #include <iostream> 3 #include <stdlib.h> 4 5 using namespace std; 6 7 struct Person{ 8 int age; 9 struct Person *next; 10 }; 11 Person *CrtHeadNode(){ 12 Person *head ,*tmp; 13 head = tmp = NULL; 14 Person *p=NULL; 15 int n; 16 cout<<"N... 阅读全文

posted @ 2012-11-01 17:52 凌峰布衣 阅读(333) 评论(0) 推荐(0) 编辑

双向链表->非循环
摘要:1 (1)定义双向链表的基本结构 2 typedef struct _DOUBLE_LINK_NODE 3 { 4 int data; 5 struct _DOUBLE_LINK_NODE* prev; 6 struct _DOUBLE_LINK_NODE* next; 7 }DOUBLE_LINK_NODE; 8 9 (2)创建双向链表节点 10 [cpp] view plaincopy 11 12 DOUBLE_LINK_NODE* create_doub... 阅读全文

posted @ 2012-11-01 16:37 凌峰布衣 阅读(629) 评论(0) 推荐(0) 编辑

单向链表->创建节点
摘要:#include <stdio.h>#include <iostream>#include <stdlib.h>using namespace std;struct Person{ int age; struct Person *next;};Person *CrtTailNode(){ Person *head ,*tmp; head = tmp = NULL; int n; cout<<"Node Number:"<<endl; cin>>n; for(int i = 0;i<n;i++){ 阅读全文

posted @ 2012-11-01 09:21 凌峰布衣 阅读(372) 评论(0) 推荐(0) 编辑

导航