03 2014 档案
摘要:虚函数有实现并且派生类可以选择是否重写该函数,纯虚函数不提供函数的实现并且如果派生类要成为具体类则必须重写该纯虚函数,否则派生类仍然为抽象类。
阅读全文
摘要:重载overload:是函数名相同,参数列表不同重载只是在类的内部存在。但是不能靠返回类型来判断。重写override:也叫做覆盖。子类重新定义父类中有相同名称和参数的虚函数。函数特征相同。但是具体实现不同,主要是在继承关系中出现的。重写需要注意:1 被重写的函数不能是static的。必须是virtual的2重写函数必须有相同的类型,名称和参数列表3重写函数的访问修饰符可以不同。尽管virtual是private的,派生类中重写改写为public,protected也是可以的重定义 (redefining)也叫做隐藏:子类重新定义父类中有相同名称的非虚函数 ( 参数列表可以不同 ) 。如果一个
阅读全文
摘要:C++ 派生类对象的地址可以赋给基类型指针,因为派生类对象是一种基类对象。而将基类对象的地址赋值给派生类指针则是错误的。ParentClass *pc;SonClass sc;pc = ≻pc指针可以调用的功能(函数)取决于该函数的句柄类型(即指针或引用的类型),而不是取决于句柄所指向的对象的类型。eg:这里父类中有成员函数print(),子类中也有print()函数;那么pc->print();这里调用的是父类中的print();因为pc指针的类型为ParentClass;
阅读全文
摘要:1,运算符函数既可以是成员函数也可以是全局函数。为了提高性能,通常将全局函数定义为友元。成员函数用this指针隐式地获得一个类对象实参(二元运算符的左操作数)。在全局函数调用中,必须显示地列出表示二元运算符的两个操作数的实参。2.重载(),[],->或任何赋值运算符是,必须将运算符重载函数声明为类的成员。其他运算符的重载函数既可以是类的成员也可以是全局函数。3.当运算符函数实现为成员函数时,最左侧的(或是唯一的)操作数必须是该运算符所属类的对象(或是该类对象的引用)4.如果左操作数必须是一个不同类的对象或基本类型对象,则运算符函数必须实现为全局函数。5.如果全局运算符函数必须直接访问类的
阅读全文
摘要:当类被实例化时,编译器会执行隐式转换的单实参构造函数,该构造函数接受的实参类型被转换成该构造函数所属类的对象。这种转换是自动的,不需要程序员进行强制类型转换。有些情况下,隐式转换是不必要的而且容易出错。eg:class Array{ Array(int a=10); //单实参构造函数,会隐身转换实参类型private:int size;int *ptr;};Array::Array(int a){ size = (s>0)?s:10;//验证数组大小 ptr = new int[size]; for(int i=0;i < size ; i++){ ...
阅读全文
摘要:delete ptr;ptr =0;在释放动态分配的内存后,应将指向该内存的指针设置为0.这样可以断开指针与之前在空闲存储区分配的空间的联系。尽管已经释放掉了,该内存空间任然可以包含信息。通过将指针设置为0,程序不能访问该空间存储空间,事实上,该空间可能已经被分配用于其他不同的用途。如果没有将指针设置为0,那么代码可能不小心访问 到新的信息,导致极其微妙、不可重复的逻辑错误。
阅读全文
摘要:如果类的成员函数不访问类的非static数据成员或非static成员函数,那么应该将他声明为static。和非static成员函数不同,static成员函数没有this指针,因为static数据成员和static成员函数独立于类的任何对象而存在。this指针必须指向特定的类对象,并且当static成员函数被调用时,内存中可能不存在任何该类的对象。一些结构在软件工程标准中指定,所有static成员函数的调用都使用类名而不使用对象句柄。static成员函数不能声明为const
阅读全文
摘要:1,传值,当把值赋给函数形参时,是赋值的副本,在函数里做的任何改变都不会影响实参的值,eg:void swap(int a,int b){ int temp; temp = a; a = b; b = temp; printf("a=%d,b=%d\n",a,b); }int main(void){ int a = 7; int b = 9; swap(a,b); printf("a=%d,b=%d\n",a,b); return 0;}output:a=9b=7a=7b=92,传引用,是在函数形参的前面加上(&)符...
阅读全文
摘要:1. 类型clock_t: 是个long型,用来记录一段时间内的时钟计时单元数,即CPU的运行单元时间。size_t: 标准C库中定义的,应为unsigned int,在64位系统中为long unsigned int。time_t: 从1970年1月1日0时0分0秒到该时间点所经过的秒数。struct tm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /* 时 - 取值区间为[0,23] */ int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] *
阅读全文
摘要:二元作用域运算符(::)在不同的地方有不同的含义1,如果成员函数中定义了和类域中的变量同名的变量,则类域中的变量被块作用域中的变量隐藏。这时可以在变量名前面加类名和作用域运算符(::)访问这种隐藏变量。eg:class A{private: int num = 2;public: void func() { int num =7; cout<<"成员变量:"<<A::num<<endl; }};2,可以用一元作用域运算符访问隐藏的全局变量double a = 5.4;int main(){ double a = 3.3; ...
阅读全文
摘要:void bucketSort(int arr[],int size){ int tempArr[10][SIZE] = {0};//桶 int max,loop,j=0; int bitVal,base=1; max = maxVal(arr,size);//数组中最大数字 while(base max){ max = arr[i]; } } return max;}
阅读全文
摘要:选择排序算法扫描一个数组并寻找数组中最小的元素,当找到最小的元素师,将它和数组中的第一个元素进行交换。接下来,从数组的第二个元素开始,这一过程在子数组上重复。每一轮的结果是有一个元素被放在了适当的位置上。这一排序需要的处理能力类似于冒泡排序。void selectSort(int arr[],int low,int high){//low 是数组的开始下标 high是结束下标 int i; int min = low; if(low < high){ for(i = low + 1;i <= high;i++){ if(arr[i]...
阅读全文
摘要:概念:把数组分割成两个相同大小的子数组,对两个数组进行排序,然后再将他们合并成一个数组。对于有奇数个元素的数组,这个算法创建两个子数组,其中一个要比另一个多一个元素。#include "stdio.h"#include "stdlib.h"#include "time.h"#define SIZE 10void mergeSort(int arr[],int low,int high);void merge(int arr[],int low,int high,int low2,int high2);int main(void){ i
阅读全文
摘要:在可变实参头文件中的宏和定义,为创建一个可变长实参列表的函数提供了必须的功能va_list 该类型适合于保存宏va_start,va_arg和va_end所需的信息。为了访问到一个可变长实参列表中的实参,必须声明一个类型为va_list的对象va_start 在一个可变长实参列表中的实参被访问之前,先要调用这个宏。这个宏的功能室:初始化用va_list声明的对象,以便让宏va_arg和va_end来使用va_arg 这个宏展开成一个表示可变长实参列表中下一个实参的值和类型的表达式。每次对va_arg的调用都要修改用va_list声明的对象,以使这个对象指向列表中的下一个实参va_end 当一个
阅读全文
摘要:1.在程序开发过程中,如果不想某些代码不参加编译,我们可以用/*和*/封起来,但是如果代码中已经有符号/*和*/,那就不能起作用了,这是我们可以采用如下结构处理:#if 0 代码。。。#endif如果想重新让这部分代码参加编译,只需要把0改为1即可。2.程序的调试。我们可以通过条件预处理命令将printf等调试的语句封装起来,让其只能在程序调试过程中起作用:#ifdef DEBUGprintf("......");#endif这里的DEBUG先前预定义(#define DEBUG)如果定义了就参加编译,如果没有就会被编译器忽略。在大型软件开发中,可能需要定义诺干个不同的符号
阅读全文
摘要:1 #include "stdio.h" 2 #include "stdlib.h" 3 #include "ctype.h" 4 #include "math.h" 5 #include "string.h" 6 7 struct stackNode{ 8 char data; 9 int value; 10 struct stackNode *nextPtr; 11 }; 12 13 typedef struct stackNode StackNode; 14 typedef StackNo
阅读全文

浙公网安备 33010602011771号