1.在标准C++中,如果main函数没有显式地提供返回语句,则它缺省返回0
2.assert(条件1)是标准C中提供的一个通用预处理器宏,它会判断条件1是否为真,如果不为真的话,则结束程序的执行(#include assert.h)
3.C++标准库的头文件没有扩展名
说明:
- iostream是标准输入输出流库的头文件(没有扩展名),它包含cout对象的定义信息。#include是预处理指令,该指令使得编译器读入被包含文件的内容并添加到#include指令处
- C++标准库中的名字(包括函数名和变量名)都是在一个称做std的名字空间中声明的,这些名字必须使用using namespace std语句后才能够被使用
- 命名空间的引入是为了避免发生命名冲突。使用了命名空间后,我们就可以在不同的命名空间中使用相同的名字而不会出错。(命名空间的定义:namespace net { class Socket { ...}; })
4.编译C++程序时,C++编译器自动定义了一个预处理器名字__cplusplus(注意前面有两个下划线)。因此,在源程序中我们可以根据它来判断该程序是否是C++程序,以便有条件地包含一些代码
在编译标准C时,编译器将自动定义名字 STDC 。当然,STDC和cplusplus不会同时被定义
5.switch(c) 语句中c不能为实型
6.STL指的是标准模版库(Standard Template Library)
7.类的析构函数不能带参数,且只能有一个
8.类的拷贝构造函数的形式参数及其内部定义的参数只能为自身类的指针或引用
9.在类A的数据成员的定义中,只能够定义A* p,而不能定义A a或A& a。而类的成员函数(除拷贝构造函数外)中,能够定义自身类的对象
10.如果类中含有用户定义的构造函数,而且构造函数带有参数,则定义对象数组时,可通过初始值表进行赋值。例如:Obj obj[4]={11,22,33,44}
11.在类的成员函数中仍可以定义与类的数据成员同名的变量(因为二者的作用域不同),此时在该函数中引用该变量时,引用的是在类的成员函数中定义的变量,类的成员变量被隐藏了。如果要引用类的成员变量,则使用 this->成员变量名 来引用
12.类的友元成员不是类的成员函数,因此不能直接在它里头使用类的数据成员名来直接引用该数据成员,而必须带有该类的入口参数。例如:friend void disp(Girl g)
13.对类的对象成员的初始化可以通过显式的调用对象成员所属类的构造函数来完成。
14.类是一种用户自定义的数据类型,因此类的定义完后要使用“;”来作为其定义结束的标志
15. 如果类A含有不带参数的构造函数,则可以使用 A a 来定义类A的对象a
16. 定义一个变量后,如果没有给该变量赋值,则该变量的值不确定.而Java中会自动将其初始化为0
17.在类的继承过程中,基类中的所有的成员都能够被继承,只是基类中的私有成员不能在其子类中使用成员名来直接访问,而必须通过基类中的公有成员来访问
18.当用基类的指针指向派生类对象时,用基类的指针只能访问基类中的派生类中的基类子对象。如果将某个函数定义为虚函数,则用基类的指针访问到的是在派生类中重新定义的函数
19.如果子类中定义了与基类中同名的数据成员,则在子类的函数中引用该数据成员时,引用的是在子类中重新定义的成员,基类中的数据成员仍然存在,只是被隐藏了。如果要引用基类中的同名数据成员,则使用基类名::数据成员名来引用
20. 如果在子类中定义了与基类函数同名的函数(函数参数可能不同),则相当于进行函数的重写。此时基类中被重写的函数将被隐藏,此后在类的定义时要调用基类中的同名成员函数时,使用基类名::成员函数名 来引用
21. 不能使用对象名.被隐藏的成员名来引用被隐藏的类成员,使用该方法只能调用在子类中重新定义的成员
22. 派生类的构造函数的一般格式为:派生类构造函数名 ( 参数表 0): 基类构造函数名 ( 参数 表 1), 对象成员名 ( 参数表 2).... 此时构造函数的执行顺序为:
- 基类的构造函数
- 对象成员的构造函数
- 派生类的构造函数
- 注意:当基类中含有不带参数的构造函数时,可以不显示调用基类的构造函数,系统会自动调用基类中的 不带参数的构造函数来初始化基类子对象
23. 多重继承 class z:public x,y // 类 z 公有继承了类 x ,私有继承了类 y
24.如果一个函数返回某个类对象,则可以使用 函数名 . 对象的成员名 来引用所返回的对象的成员
25.在派生类中对基类中声明的虚函数进行重新定义时,虚函数的原型必须与基类中的函数原型完全相同,且一个函数一旦被声明为虚函数,则它无论被公有继承多少次,仍然是虚函数。虚函数必须是类的成员函数,而不能是类的友元函数
26.纯虚函数的一般形式如下:
27.如果编译器在一个运算符的两边“看”到自定义的数据类型,就执行用户自己的函数
32. 运算符重载实际上是函数的调用(此时的函数名为:operator运算符名)。如果将运算符重载为类的成员函数,则该类的对象默认为该运算符的一个参数(因为要调用类的成员函数必须要使用该类的对象名),因此双目运算符如果重载为类的成员函数的话,只含有一个参数
浙公网安备 33010602011771号