在一个函数的定义或声明前加上关键字__________时,该函数就声明为内联[1]函数。1.3简答题A、.内联函数的含义在函数前加上关键字inline说明了一个内联函数,这使一个函数在程序行里进行代码扩展而不被调用。这样的好处是减少了函数调用[2]的开销,产生较快的执行速度。但是由于重复编码会产生较长代码,所以内联函数通常都非常小。如果一个函数在类说明中定义,则将自动转换成内联函数而无需用inline说明。B、.函数重载的含义在同一作用域[3]范围内,相同的函数名通过不同的参数类型或参数个数可以定义几个函数,编译时[4]编译器能够识别实参[5]的个数和类型来决定该调用哪个具体函数。需要注意的是,如果两个函数仅仅返回类型不同,则编译时将会出错,因为返回类型不足以提供足够的信息以使编译程序[6]判断该使用哪个函数。所以函数重载时必须是参数类型或者数量不同。C、引用与指针的区别D、内联函数使用上的限制E、定义带默认参数值函数的规则F、指针与常量[7]的关系1.4程序阅读题1)写出下列程序的运行结果。#include <iostream.h>void main()(int x;int p=x;x=10;p=x+10;cout<<x<<","<<p<<endl;)结果:20,202)写出下列程序的运行结果。#include <iostream.h>int f(int a)(return ++a;)int g(int a)(return ++a;)void main()(int m=0,n=0;m+=f(g(m));n+=f(f(n));cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;)结果:m=3n=23)写出下列程序的运行结果。#include <iostream.h>void Fun()(int num=20;cout<<"The Fun's num is"<<num<<endl;)void main()(int num=10;cout<<"The main's num is "<<num<<endl;Fun();{int num=30;cout<<"The Field's num is "<<num<<endl;)cout<<"The main's num is "<<num<<endl;}结果:The main's num is 10The Fun's num is20The Field's num is 30The main's num is 10类和对象2.1选择题下列的各类函数中,不是类的成员函数。(C)A)构造函数[8]B)析构函数[9]C)友元[10]函数D)拷贝初始化构造函数作用域运算符“::”的功能是:(B)A)标识作用域的级别的B)指出作用域的范围的C)给定作用域的大小的D)标识成员是属于哪个类的已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的。(A)A)void print()const;B)const void print();C)void const print():D)void print(const);在类定义的外部,可以被访问的成员有(C)A)所有类成员B)private的类成员C)public的类成员D)public或private的类成员关于类和对象不正确的说法是:(C)A)类是一种类型,它封装了数据和操作B)对象是类的实例C)一个类的对象只有一个D)一个对象必属于某个类在C++中实现封装是借助于( B )A)枚举B)类C)数组D)函数定义析构函数时,应该注意:(C)A)其名与类名完全相同B)返回类型是void类型C)无形参,也不可重载D)函数体中必须有delete语句类clase CC1的说明如下,错误的语句是:(A)clase CC1(________________________________________________public:________________________________________________);类的指针成员的初始化是通过函数完成的,这个函数通常是:( B )A)析构函数B)构造函数C)其它成员函数D)友元函数关于构造函数的说法,不正确的是:(A)A)没有定义构造函数时,系统将不会调用它B)其名与类名完全相同C)它在对象被创建时由系统自动调用D)没有返回值通常拷贝构造函数的参数是:(C)A)对象名B)对象的成员名C)对象的引用名D)对象的指针名关于成员函数特征的描述中,错误的是:(A)A)成员函数一定是内联函数B)成员函数可以重载C)成员函数可以设置参数的默认值D)成员函数可以是静态的下列关于构造函数的描述中,错误的是:(D)A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行C)构造函数可以是内联函数;D)构造函数不可以重载有如下类声明“class A(int x;……);”,则A类的成员x是:(B)A)公有数据成员B)私有数据成员C)公有成员函数D)私有成员函数类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的:( C )A)TM * a B)TN a C)TM a D)TN a;以下关于this指针的叙述中正确的是:(D)A)任何与类相关的函数都有this指针;B)类的成员函数都有this指针;C)类的友员函数都有this指针;D)类的非静态成员函数才有this指针;.关于类模板的说法正确的是:(B)A)类模板的主要作用是生成抽象类[11]B)类模板实例化时,编译器将根据给出的模板实参生成一个类C)在类模板中的数据成员具有同样类型D)类模板中的成员函数没有返回值.以下关键字不能用来声明类的访问权限的是:(C)A)public B)private C)static D)protected.类的私有成员可在何处访问(D)A)通过子类[12]的对象访问B)本类及子类的成员函数中C)通过该类对象访问D)本类的成员函数中.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是:(A)A)编译器总是自动创建一个不带参数的构造函数B)这个类没有构造函数C)这个类不需要构造函数D)该类不能通过编译.一个类可包含析构函数的个数是:(B)A)0个B)1个C)0个或1个D)0个或多个.一个类可包含构造函数的个数是:(D)A)0个B)0个或1个C)0个或多个D)1个或多个.this指针存在的目的是:(B)A)保证基类公有成员在子类中可以被访问B)保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C)保证基类保护成员在子类中可以被访问D)保证基类私有成员在子类中可以被访问.下列关于类的权限的描述错误的是:(A)A)类本身的成员函数只能访问自身的私有成员B)类的对象只能访问该类的公有成员C)普通函数不能直接访问类的公有成员,必须通过对象访问D)一个类可以将另一个类的对象作为成员.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是:(B)A)A类构造函数先执行B)成员构造函数先执行C)两者并行执行D)不能确定.假定有类AB,有相应的构造函数定义,能正确执行“AB a(4),b(5), c[3] , *p[2]=(a,b);”语句,请问执行完此语句后共调用该类构造函数的次数为(C)A)3 B)4 C)5 D)6拷贝构造函数的作用是(C)。A.进行数据类型[13]的转换B.用对象调用成员函数C.用对象初始化对象D.用一般类型的数据初始化对象下列静态数据成员的特性中,错误的是(D)。A.静态数据成员的声明以关键字static开头B.静态数据成员必须在文件作用域内初始化C.引导数据成员时,要在静态数据成员前加(类名)和作用域运算符D.静态数据成员不是类所有对象共享的通过指针访问类对象成员的方法是(D)。A. :: B. ; C. . D. ->静态成员函数没有(B)。A.返回值 B. this指针 C.指针参数 D.返回类型在下列关键字中,用于说明类中公有成员的是(A)。A.public;B.private;C.protected;D.friend不是构造函数的特征(D)。A.构造函数的函数名与类名相同; B. 构造函数可以重载;C.构造函数可以设置缺省参数; D. 构造函数必须指定类型说明。是析构函数的特征(A)。A.一个类中只能定义一个析构函数; B. 析构函数名与类名不同;C. 析构函数的定义只能在类体内; D. 析构函数可以有一个或多个参数。关于成员函数特征的下述描述中,(A)是错误的。A.成员函数一定是内联函数; B. 成员函数可以重载;C.成员函数可以设置参数的缺省值; D. 成员函数可以是静态的。下述静态数据成员的特性中,(D)是错误的。A.说明静态数据成员时前边要加修饰符static;B.静态数据成员要在类体外进行初始化;C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;D.静态数据成员不是所有对象所共用的。2.2填空题
在一个函数的定义或声明前加上关键字__________时,该函数就声明为内联[1]函数。
1.3简答题
A、.内联函数的含义
在函数前加上关键字inline说明了一个内联函数,这使一个函数在程序行里进行代码扩展而不被调用。这样的好处是减少了函数调用[2]的开销,产生较快的执行速度。但是由于重复编码会产生较长代码,所以内联函数通常都非常小。如果一个函数在类说明中定义,则将自动转换成内联函数而无需用inline说明。
B、.函数重载的含义
在同一作用域[3]范围内,相同的函数名通过不同的参数类型或参数个数可以定义几个函数,编译时[4]编译器能够识别实参[5]的个数和类型来决定该调用哪个具体函数。需要注意的是,如果两个函数仅仅返回类型不同,则编译时将会出错,因为返回类型不足以提供足够的信息以使编译程序[6]判断该使用哪个函数。所以函数重载时必须是参数类型或者数量不同。
C、引用与指针的区别
D、内联函数使用上的限制
E、定义带默认参数值函数的规则
F、指针与常量[7]的关系
1.4程序阅读题
1)写出下列程序的运行结果。
#include <iostream.h>
void main()
{
int x;
int p=x;
x=10;
p=x+10;
cout<<x<<","<<p<<endl;
}
结果:20,20
2)写出下列程序的运行结果。
#include <iostream.h>
int f(int a)
{
return ++a;
}
int g(int a)
{
return ++a;
}
void main()
{
int m=0,n=0;
m+=f(g(m));
n+=f(f(n));
cout<<"m="<<m<<endl;
cout<<"n="<<n<<endl;
}
结果:
m=3
n=2
3)写出下列程序的运行结果。
#include <iostream.h>
void Fun()
{
int num=20;
cout<<"The Fun's num is"<<num<<endl;
}
void main()
{
int num=10;
cout<<"The main's num is "<<num<<endl;
Fun();
{
int num=30;
cout<<"The Field's num is "<<num<<endl;
}
cout<<"The main's num is "<<num<<endl;
}
结果:
The main's num is 10
The Fun's num is20
The Field's num is 30
The main's num is 10
类和对象
2.1选择题
下列的各类函数中,不是类的成员函数。(C)
A)构造函数[8]B)析构函数[9]C)友元[10]函数D)拷贝初始化构造函数
作用域运算符“::”的功能是:(B)
A)标识作用域的级别的B)指出作用域的范围的
C)给定作用域的大小的D)标识成员是属于哪个类的
已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的。(A)
A)void print()const;B)const void print();
C)void const print():D)void print(const);
在类定义的外部,可以被访问的成员有(C)
A)所有类成员B)private的类成员
C)public的类成员D)public或private的类成员
关于类和对象不正确的说法是:(C)
A)类是一种类型,它封装了数据和操作B)对象是类的实例
C)一个类的对象只有一个D)一个对象必属于某个类
在C++中实现封装是借助于( B )
A)枚举B)类C)数组D)函数
定义析构函数时,应该注意:(C)
A)其名与类名完全相同B)返回类型是void类型
C)无形参,也不可重载D)函数体中必须有delete语句
类clase CC1的说明如下,错误的语句是:(A)
clase CC1{
________________________
________________________
public:
________________________
________________________
};
类的指针成员的初始化是通过函数完成的,这个函数通常是:( B )
A)析构函数B)构造函数C)其它成员函数D)友元函数
关于构造函数的说法,不正确的是:(A)
A)没有定义构造函数时,系统将不会调用它B)其名与类名完全相同
C)它在对象被创建时由系统自动调用D)没有返回值
通常拷贝构造函数的参数是:(C)
A)对象名B)对象的成员名C)对象的引用名D)对象的指针名
关于成员函数特征的描述中,错误的是:(A)
A)成员函数一定是内联函数B)成员函数可以重载
C)成员函数可以设置参数的默认值D)成员函数可以是静态的
下列关于构造函数的描述中,错误的是:(D)
A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行
C)构造函数可以是内联函数;D)构造函数不可以重载
有如下类声明“class A{int x;……};”,则A类的成员x是:(B)
A)公有数据成员B)私有数据成员C)公有成员函数D)私有成员函数
类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的:( C )
A)TM * a B)TN a C)TM a D)TN a;
以下关于this指针的叙述中正确的是:(D)
A)任何与类相关的函数都有this指针;B)类的成员函数都有this指针;
C)类的友员函数都有this指针;D)类的非静态成员函数才有this指针;
.关于类模板的说法正确的是:(B)
A)类模板的主要作用是生成抽象类[11]
B)类模板实例化时,编译器将根据给出的模板实参生成一个类
C)在类模板中的数据成员具有同样类型
D)类模板中的成员函数没有返回值
.以下关键字不能用来声明类的访问权限的是:(C)
A)public B)private C)static D)protected
.类的私有成员可在何处访问(D)
A)通过子类[12]的对象访问B)本类及子类的成员函数中
C)通过该类对象访问D)本类的成员函数中
.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是:(A)
A)编译器总是自动创建一个不带参数的构造函数B)这个类没有构造函数
C)这个类不需要构造函数D)该类不能通过编译
.一个类可包含析构函数的个数是:(B)
A)0个B)1个C)0个或1个D)0个或多个
.一个类可包含构造函数的个数是:(D)
A)0个B)0个或1个C)0个或多个D)1个或多个
.this指针存在的目的是:(B)
A)保证基类公有成员在子类中可以被访问
B)保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C)保证基类保护成员在子类中可以被访问
D)保证基类私有成员在子类中可以被访问
.下列关于类的权限的描述错误的是:(A)
A)类本身的成员函数只能访问自身的私有成员
B)类的对象只能访问该类的公有成员
C)普通函数不能直接访问类的公有成员,必须通过对象访问
D)一个类可以将另一个类的对象作为成员
.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是:(B)
A)A类构造函数先执行B)成员构造函数先执行
C)两者并行执行D)不能确定
.假定有类AB,有相应的构造函数定义,能正确执行“AB a(4),b(5), c[3] , *p[2]={a,b};”语句,请问执行完此语句后共调用该类构造函数的次数为(C)
A)3 B)4 C)5 D)6
拷贝构造函数的作用是(C)。
A.进行数据类型[13]的转换B.用对象调用成员函数
C.用对象初始化对象D.用一般类型的数据初始化对象
下列静态数据成员的特性中,错误的是(D)。
A.静态数据成员的声明以关键字static开头
B.静态数据成员必须在文件作用域内初始化
C.引导数据成员时,要在静态数据成员前加(类名)和作用域运算符
D.静态数据成员不是类所有对象共享的
通过指针访问类对象成员的方法是(D)。
A. :: B. ; C. . D. ->
静态成员函数没有(B)。
A.返回值 B. this指针 C.指针参数 D.返回类型
在下列关键字中,用于说明类中公有成员的是(A)。
A.public;B.private;C.protected;D.friend
不是构造函数的特征(D)。
A.构造函数的函数名与类名相同; B. 构造函数可以重载;
C.构造函数可以设置缺省参数; D. 构造函数必须指定类型说明。
是析构函数的特征(A)。
A.一个类中只能定义一个析构函数; B. 析构函数名与类名不同;
C. 析构函数的定义只能在类体内; D. 析构函数可以有一个或多个参数。
关于成员函数特征的下述描述中,(A)是错误的。
A.成员函数一定是内联函数; B. 成员函数可以重载;
C.成员函数可以设置参数的缺省值; D. 成员函数可以是静态的。
下述静态数据成员的特性中,(D)是错误的。
A.说明静态数据成员时前边要加修饰符static;
B.静态数据成员要在类体外进行初始化;
C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;
D.静态数据成员不是所有对象所共用的。
2.2填空题
题目解答
答案
_inline_ int a=2 ; //(A) CC1() ; //(B) CC1(int val) ; //(C) ~CC1() ; //(D)