1,在需求分析阶段可以使用DFD图和,数据字典DD,以及判定树与判定表。
2,指向常量的指针可以不初始化:const double *point; 指针常量需要初始化:double *const point;
3,单目运算符--->成员函数,双目运算符(除了=,(),->,[ ])--->)友元函数
4,需要调用拷贝构造函数:1 函数的参数是类的对象;2 函数的返回值是类的对象;3 定义一个新的对象,用另一个对他初始化;
5,常对象只能调用它的常成员函数
6,程序中的typename都可以替换成class; 但是class不可以替换成typename;
7,任意一颗 二叉树度为0的叶子节点总比度为2的叶子节点多1;
8,模块化的耦合性,内聚性;耦合性:各个模块之间互相联系的紧密程度;内聚性:模块内部各个元素结合的紧密程度;最好做到高内聚低耦合;
9,投影运算:对于关系内的域指定可以引入新的运算;
10,不能被重载的5个运算符: . * :: ?: sizeof
11,派生类是从已有的类复制他的属性,函数;若基类未缺省构造函数,则在派生类中要重新定义;建立派生类对象时,先调用基类的构造函数,再调用派生类;销毁派生类对象时,先销毁派生类,再基类;
12,对象指针不调用构造函数*p[4];
10,静态成员函数:静态成员函数由于没有this指针,所以只能访问静态成员(静态变量和函数),但是可以被一般对象调用;
11,常成员函数:用const定义,在常成员函数中不得修改任何类中的数据成员的值,只能引用本类中的数据,它可以被常对象和一般对象调用;
12,常对象:常对象中的数据成员必须是常变量,且要有初值,但是常对象的成员函数不一定是常成员函数,不过,常对象只能调用常成员函数;
13,纯虚函数:虚函数定义在基类,如果这个虚函数无意义,而是留给派生类定义,则它在基类中称为纯虚函数,定义时无函数体,在末尾要加=0;
13,抽象类:含有纯虚函数的类是抽象类;
13,PAD是问题分析图,软件设计需求方面;E-R是数据库的关系图:shi'ti实体集用矩形,椭圆是属性,联系是菱形;
14,只有类的非静态成员函数才有隐含的this指针,其作用域是类的内部;
15,虚基类:派生类的基类的基类是这个派生类的虚基类;
15,构造函数只能用初始化列表来初始化常数据成员;
16,虚函数:在基类中用virtual定义,在派生类中再次定义的函数,不得是静态成员函数;
17,派生类:基类如果是缺省的构造函数,或者未定义任何构造函数,派生类可以省略对基类构造函数的调用;
17,内联函数:这个函数一般比较短小,被调用的时候主函数不会跳转到这个函数中,而是直接将这个函数的代码下载到自己函数主体中。
在函数定义前加上inline就行:inline void function(){};
18,传递参数时,若形参是指*针,则实参对应是地址引&用;若形参是地址引用,对应实参是值;
19,运算符重载的时候会省略一个参数,所以如果是一元运算符则只有一个参数;一元运算符可以作为成员函数和非成员函数,
二元运算符作为非成员函数,必须有两个参数;
19,必须以类的成员函数重载的运算符有:= [ ] () new delete
18,运算符函数:可以定义为类的友元函数和成员函数;
18, 友元函数重载时,参数列表为1,说明是1元,为2说明是2元。
成员函数重载时,参数列表为空,是一元,参数列表是1,为2元。
19,this:只有类的非静态成员函数有,友元函数不是类的成员函数;
20,友元函数:虽然不是类的成员函数,但是可以访问类的成员;
21,const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间。
22,引用静态成员函数两种方法:1,类名::静态成员函数名(Constants::getPI()), 2,对象名.静态成员函数名(object.getPI());
23,拷贝构造函数:也称复制构造函数,当对象的参数是另一个对象时,调用。一般的形式为:
class 类名
{
类名(形参参数){构造函数的声明}
类名(类名&对象名){拷贝构造函数的声明};
}
class ClassName
{
ClassName(int x){ };
ClassName( ClassName&obj){ };
}
24,虚基类:B继承至A,两者都有一个相同的虚基类,B调用同样的函数,若函数中的参数是普通的值,则执行的函数来自A,若参数是地址引用,则执行的函数来自于B;
25,初始化构造函数列表:一个类可以有多个构造函数,构造函数是为了初始化对象的数据成员,创建对象时根据传入的参数不同调用不同的构造函数
class Lei{
public:
int x, y;
Lei(): x(8), y(9) { };
//相当于
Lei(){ x=8; y=9; }}
26,二叉树的高度和深度是一个意思:指最多的根到子树的层数;
27,二叉树的度:就是开了几个叉;
28,叶子结点:就是度为0的结点;比如满二叉树的最后一排都是叶子结点;叶子结点总比度为2的结点多1;
29,自然连接:将两个集合中属性组相同的合并到一起,不相同的属性舍弃;
30,对象数组:避免重复实例化相同的对象,Classname obj[ 3] ;表示实例化3个obj;
31,常变量和静态数据成员:常变量是不能被修改值,必须初始化的常量;静态变量是被所有对象拥有,可以修改的变量;
32,类的数据成员不能在声明类的时候初始化;
33,指针数组对象不执行构造函数:*obj[3];
34,对象在离开其作用域时被销毁,析构函数在对象被销毁时执行;
35,静态数据成员初始化必须在类体外,格式:
int Classname::变量名=6;
36,模板函数:template
37,ios::in是以输入方式打开文件,若文件不存在,不会新建一个;
38,类C继承自类A,类B在类C中定义了一个变量;如果类C执行构造函数的初始化列表中如果有A的构造函数,C定义的变量,那么它的执行顺序是,先执行A的操作,然后执行B,最后是C;
39,基类指针指向派生类对象:
基类A的派生类是B,classB : publicA{}, 有这样一个定义:A *p=new B();
那么,*p只能调用基类中的成员函数,不能调用派生类才有的成员函数,但是如果基类中存在虚函数,那么*p调用的是派生类中与虚函数对应的函数。
40,类的指针调用类的成员函数时,用->, 而不是. 另外,类的构造函数要对类的数据成员初始化,就是将类中的变量在构造函数中做赋值操作;
41,抽象类不可以作为对象的类型,void fun ( Classname obj){ }是错误的,但是可以void fun (Classname *obj)或者void fun(Classname &obj),因为指针可以指向抽象类的派生类,派生类不一定是抽象类;
41,抽象类只能作为派生类的基类,不能定义对象,但可以定义指针。在派生类实现该纯虚函数后,定义抽象类对象的指针,并指向或引用子类对象。
42,在类外创建构造函数,成员函数;
A::A(){};
void A::count(){ };
在类外静态变量要初始化:
int A::age=12;
43,定义一个派生类对象,首先初始化它的基类成员,派生类成员的初始化,依赖它的声明顺序而不是依赖初始化列表的顺序,定义一个派生类对象,首先初始化它的基类成员;
44,一般填空题要求释放指针空间,直接看下面哪个函数带有*,然后delete [ ]name;
45,栈底在下面,栈顶在上面,第一个数据先入栈底,栈顶元素第一个出,栈底元素最后一个被删除。
46,枚举:若定义的一些数中有一个变量被初始化为一个确切的数值,则其后面跟随的变量是比它大一的自然数,以此类推;
47,内联函数被发明出来是为了取代宏;
48,在类体内定义的函数,注意是定义,不是声明,系统默认是内联函数,在类外定义需要加inline;
49,若构造函数的参数中是已经初始化 的变量,当定义的对象中未初始化参数,则使用构造函数的,若对象有初始化参数,则使用对象的;
50,公有继承的时候可以调用基类的保护成员,不能调用私有成员;
51,输入流getline()是将输入的字符串保存到str中,直到遇到终结符delim
52,软件结构图 支持软件系统的详细设计;
53,“a”是字符串,’a'才是字符常量;
54,关系模型实体间的联系用二维表,网状模型实体间的联系用网状结构,层次模型实体间的联系用树状结构;
55,投影是从一个表中选择几列做子表,选择是从一个表中选择几行做子表,选择不会丢失属性;
56,等价类划分法,边界值分析法,错误推测法属于黑盒测试(不需要知道程序代码如何实现,关注功能);
57,函数模板:如果某几个函数的函数体相同,可以使用这个模板简化代码:
template
T max(T a,T b,Tc){ return a+b+c;}
template是表示这个是模板,class和typename表示变量类型, T表示(int,double...) ,max是函数体
比如 :
int min(int a, char b, double c){ return a+b+c }就和模板函数格式相同,调用的时候直接:
int a,char b, int c;
max(a,b,c);只要和模板函数的格式相同就行。
58,运算符重载为成员函数格式:
<函数类型> operator <运算符>(<参数表>)
{
<函数体>
}
运算符重载为类的友元函数的一般格式为:
friend <函数类型> operator <运算符>(<参数表>)
{
<函数体>
}
当运算符重载为类的成员函数时,函数的参数个数比原来的操作数要少一个,友元函数参数个数无变化;
59,运算符--重载为非成员函数:
int& opreater --(int&)
60,度为0 的叶子结点比度为2的节点多1,如果告诉你二叉树中度为0和度为1的节点数,那么就可以求出此二叉树的所有节点数;因为二叉树的度大于0,小于3;
61,除了栈排序,常见的普通排序最坏情况下都要比较n(n-1)/2次;
62,编译obj,链接cpp,运行exe
63,析构函数不能带任何参数和返回值;
64,若是公有继承,派生类可以在类内访问基类的保护成员,不可以在类外访问;
65,setw()表示总宽度,(后面紧跟的内容有效),left,right表示左对齐,右对齐;setfill()表示以什么内容填满;
cout< cout< 66,关系中,R-(R交S)=T 的方式是差; 67,计算机二级上机考试时,监考老师会讲如何打开哪个文件,操作题程序如何保存,要认真听,各个考场大同小异。我们考试首先打开后缀名为.sln的文件,进入vc++界面以后,左侧边栏有资源管理,点击展开,点击源文件,选择main.cpp开始修改程序。修改完毕后直接点击保存,然后点击上方绿色三角形开始调试,调试的时候,由于程序最后一句是return 0,所以调试的小 黑窗会一闪而过,如果想看调试结果,可以在return语句前加,int a;cin>>a;当然,最后要把这两句删除。然后保存,退出就ok了。