1-1当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储n个整数。

1-2当函数的返回值是数组类型的,传递的是数组第一个元素的地址。

1-3当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访问类A的所有成员。

1-4程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。

1-5内部静态类变量与自动类变量作用域不同,但是生存期不同。静态存储类型的局部变量是在静态存储区内分配内存单元,在程序的整个运行期间内都不释放空间。而自动类型的局部变量属于动态存储类型,是在动态存储区内分配存储单元的,函数调用结束后存储单元即被释放。

1-6重载为成员函数时,参数个数比运算符的操作数个数少1个。

1-7若重载为友元函数,函数定义格式如下:<类型>operator<运算符>(<参数列表>){<函数体>}。

1-8使用关闭文件函数close()关闭一个文件时,流对象仍存在。

1-9若重载为成员函数,其定义如下:<类型><类名>::operator<运算符>(<参数列表>){<函数体>}。

1-10在C++中,只能重载C++预定义的运算符,不能创造新的运算符。

1-11关于结构化程序设计,结构化程序设计缩小了程序的静态结构与动态执行之间的差异。

1-12关于结构化程序设计,结构化程序设计限制了程序的控制结构,使程序单位(程序块)只有一个入口和一个出口。

1-13 C++运算符new自动建立一个大小合适的对象并返回一个具有正确类型的指针。

1-14每个对象都有一个指向自身的指针,称为 this 指针,通过使用它来确定其自身的地址。

1-15类中的构造函数是一个特殊的成员函数,它由类的对象自动调用,它的作用是为对象分配内存空间,初始化类的数据成员并进行一些其它类的内部操作。

1-16常量对象必须初始化,并且不能在生成之后修改。

1-17有如下定义语句:MyClass*p[5];,则当类对象数组指针p离开它的作用域时,系统自动调用该类析构函数0次。MyClass p[5];,则当类对象数组指针p离开它的作用域时,系统自动调用该类析构函数5次。

1-18当一个类对象的成员函数被调用时,该成员函数的 this指针 指向调用它的对象。

1-19重载函数可以带有默认值参数,但是要注意二义性。

1-20以app 方式打开文件时,当前的读指针和写指针都定位于文件尾。

1-21计算机最小的寻址单位是字节(byte),最小的存储单位是(bit)

1-22打开ASCⅡ码流文件和二进制流文件时,打开方式是不同的。

1-23 read()和write()函数可以读写文本文件,也可以读写二进制文件。

1-24流的状态包含流的内容、长度和下一次提取或插入操作的当前位置。

1-25 seekg()函数和seekp()函数分别用来定位指针和指针的。如果使用seek()函数可以同时定义读写指针。

1-26函数模板的友元函数必须是模板函数。(x 友元只能出现在类定义的内部)

1-27 模板函数可以用同名的另一模板函数重载。

1-28同一个形式参数名只能用于一个模板函数。 (x)

1-29 关键字class 指定函数模板类型参数,实际上表示“任何用户自定义类型”。(x 表示使用所有c++数据类型)

1-30因为静态成员函数不能是虚函数,所以它们不能实现多态。

1-31多数运算符可以重载,个别运算符不能重载,运算符重载是通过函数定义实现的。

1-32在C++语言中引入内联函数(inline function)的主要目的是减少函数调用的开销。不是降低空间复杂度(即缩短目标代码长度)。

1-33 C++程序中,类的构造函数名与类名相同。

1-34可以通过下标随机访问向量vector中的元素。

1-35当向量对象的内存用完之后,就会产生越界错误。(x 预留空间机制)

1-36面向对象程序设计的继承性鼓励程序员重用被实践验证的高质量软件。

1-37在protected保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。

1-38文件流对象的成员函数read()和write()函数可以读写文本文件,也可以读写二进制文件。

1-39构造函数不可以声明为虚函数

1-40在析构函数中调用虚函数时,采用静态束定。当存在类继承时,其子类的析构函数需要是虚函数,若动态束定,使用父类指针指向子类对象,在delete时只会调用父类的析构函数,而不能调用子类的析构函数,从而造成内存泄露。

1-41在一个成员函数内调用一个虚函数时,对该虚函数的调用进行动态束定

1-42对每个可重载的运算符来讲,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。(x)

1-43公有继承可以实现子类型关系。通过公有继承,派生类得到了基类中除了构造函数、析构函数之外的所有成员,而且可访问成员的访问控制属性也和基类完全相同。这样,派生类对象就可以作为基类的对象使用,但它只能使用从基类继承的成员。

1-44构造函数不可以声明为纯虚函数

1-45如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。

1-46虚函数不能是类的静态成员

1-47重定义虚函数的派生类必须是公有继承的。多态的实现必须以public方式继承。

1-48对于从基类继承的虚函数,派生类也可以不进行重定义。

1-49纯虚函数与函数体为空的虚函数不等价。

1-50多态类提供了一种动态多分支派送机制。

1-51作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码。

1-53对单目运算符重载为友元函数时,可以说明一个形参。而重载为成员函数时,不能显式说明形参。(对于后置单目运算符,重载函数有一个int型形参。这个int型参数在函数体中并不使用,纯粹是用来区别前置与后置,因此参数表中可以只给出类型名,没有参数名)。

1-54重载函数的参数列表必须不相同。

1-55基类与派生类对象之间具有赋值兼容的关系(指在需要基类对象的任何地方,都可以用公有派生类的对象来替代),可以进行类型间的转换,派生类对象可以直接转换为基类对象,反之则禁止。

1-56如果函数的参数是基类对象或基类对象的引用,函数调用时的实参可以是派生类对象。

1-57多重继承派生类的构造函数,需要调用所有的基类构造函数来完成各基类数据成员的初始化。

1-58重载关系运算符一般都返回true或false值。

1-59异常处理的catch{ }语句块必须紧跟try{ }语句块之后,这两个语句之间不能插入另外语句。

1-60有如下语句序列

第1行: int a=1;

第2行: try{

第3行: if(a==1) throw(a);

第4行: a++;

第5行: }

第6行: catch(int b){

第7行: cout << “error! a =” << b << endl;

第8行: }

没有编译错误。

1-61当文件输出流写文件的打开模式为trunc时,若文件已存在,则覆盖存在文件。

1-62静态成员函数不能是虚函数,所以不能实现动态多态,即运行时多态。

1-63通过命名空间可以区分具有相同名字的函数

1-64重载运算符可以保持原运算符的优先级和结合性不变。

1-65 对于有返回值的return语句,用它可以返回一个表达式的值,从而实现函数之间的信息传递。

1-66 while(a=1){cout<<"hello";}执行次数未知。

1-67判断数组声明及初始化语句 charstr[]={'H','e','l','l','o'};为正确。

1-68可以使几个不同类型的变量共用同一段存储单元。(共用体)

1-69结构体变量不能作为一个整体进行输入或输出。只能对结构体变量中的各个成员分别进行输入和输出。

1-70已知class A中有数据成员inta,如果定义了A的两个对象a1,a2,它们各自的数据成员a的值可以不同.。

1-71 set/multiset的区别是set用来存储一组无重复的元素,而multiset允许存储有重复的元素。

1-72 STL中关联型容器都是有序的。

1-73 pair类模板的作用是将两个数据组成一个数据,用来表示一个二元组或一个元素对,两个数据可以是同一个类型也可以是不同的类型。

1-74 映射容器里存储的元素都是成对存在的。

1-75虚函数是用virtual 关键字说明的成员函数。

1-76派生类中的虚函数,不仅可以覆盖基类的虚函数,还会隐藏基类中同名函数的所有其它重载形式。

1-77逻辑运算的短路特性,是指当第一个操作数满足某种条件后,就不会再执行第二个操作数的运算。

1-78在人工进行位运算时,应按操作数的补码进行运算。

1-79主程序调用内联函数(inline)时,不发生控制转移,无需保存和恢复环境变量等,因此,节省了系统开销。内联函数的声明以及最终的生效,不是由程序员决定的。对函数作 inline 声明只是程序员对编译器提出的一个建议,而不是强制性的,并非一经指定为 inline 编译器就必须这样做。编译器有自己的判断能力,它会根据具体情况决定是否这样做。

1-80两个以上的函数,具有相同的函数名,且形参的个数或形参的类型不同,(返回的数据类型可同可不同),则称之为函数的重载

1-81在类的成员函数中,const关键字可以用作对重载函数的区分

1-82编译预处理指令,是C++统一规定的,但是它不是C++语言本身的组成部分,不能直接对它们进行编译(因为编译程序不能识别它们)。

1-83函数的形参与实参结合的两种方式(传值、传址),其本质区别在于形参与实参结合时,是否在内存空间临时的创建新的内存区域并进行赋值操作。由此,也引发出了两种参数结合方式各自的优缺点,例如传值方式,效率较低,但安全性高;传址方式,效率高,但形参可影响实参的值,故安全性欠佳。

1-84继承与派生,所承担的任务和功能是不一样的。

1-85类的组合关系可以用“Has-A”描述;类间的继承与派生关系可以用“Is-A”描述。

1-86将构造函数说明为纯虚函数是没有意义的。

1-87 usingnamespace std; 这条语句的作用是将命名空间std内的所有标识符暴露在当前作用域内。

1-88编译预处理指令#include的处理方式是在编译代码前使用string.h文件的内容替换这条指令。预处理器发现 #include 指令后,就会寻找后跟的文件名并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源代码文件中的#include指令,就像你把被包含文件中的全部内容键入到源文件中的这个位置一样。

1-89使用new运算符开辟存储空间后,必使用delete运算符撤销相应的空间。

1-90 int i; int&ri=i;对于这条语句,ri和i这两个变量代表的是同一个存储空间。

1-91一个类的友元函数不是这个类的成员,它只是能访问类的数据成员。

1-92基类中的私有成员不论通过何种派生方式,到了派生类中均变成不可直接访问成员。

1-93派生类中对继承自基类的虚函数会进行重载还不一定实现多态。

1-94对于++运算符的重载,要求重载两种形式,一种是前置++,一种是后置++。

1-95迭代器是对象,它的作用类似于指向元素的指针。

1-96 STL算法使用迭代器间接地对容器中的元素进行操作。

1-97抽象类不是指一些没有说明对象的类。含纯虚函数类叫抽象类。

1-98 1-99 C++程序中,一个类的构造函数可以被重载,析构函数不可以被重载

1-100析构函数的作用主要是释放对象占用的资源。

1-101友元函数不是类的成员函数,只是独立于该类的一般函数。

1-102一个类的友元函数可以访问该类的私有成员。

1-103可以将一个类的成员函数(包括构造和析构函数)说明为另一个类的友元。

1-104如果A是B的友元类,那么A的成员函数可以访问B的私有成员。

1-105友元类之间的关系不能传递,不能继承。

1-106如果不希望某个对象的值被改变,则定义该对象的时候可以在前面加上const关键字。

1-107在类的成员函数说明后可以加const关键字,则该成员函数成为常成员函数。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐