上一页 1 ··· 4 5 6 7 8

2012年11月2日

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 凌峰布衣 阅读(2300) 评论(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 凌峰布衣 阅读(1117) 评论(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 凌峰布衣 阅读(376) 评论(0) 推荐(0) 编辑

virtual-->Class

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

posted @ 2012-11-02 15:17 凌峰布衣 阅读(734) 评论(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) 编辑

2012年11月1日

单向链表->单向循环链表

摘要: 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 凌峰布衣 阅读(628) 评论(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 凌峰布衣 阅读(371) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8

导航