1.不定义第三个变量,交换两个变量的数据
x+=y;
y=x-y;
x-=y;
2.常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值
3.在C++中,可以被派生类继承的函数是()?
A.成员函数
B.构造函数
C.析构函数
D.友元函数
答案:A
解析:
1.构造函数不能为 virtual, 构造函数不能继承
2. 如果子类不显式调用父类的构造函数,编译器会自动调用父类的【无参构造函数】
3. 在C++中,派生类把基类中所有的成员继承过来,除了构造函数和析构函数。 友元函数不属于类,它只是给类开了一个后门 本来类外不可以访问类的私有成员,通过友元函数就可以,所以不能继承。
4. 子类继承父类,那么默认的,就是继承了父类的成员函数和成员变量
5. 初始化子类时,会先自动调用父类的构造函数。然后才调用子类的构造函数,析构时,按相反顺序进行。 构造从类层次的最根处开始,在每一层中,首先调用基类的构造函数,然后调用成员对象的构造函数。析构则严格按照与构造相反的次序执行,该次序是唯一的,否则编译器将无法自动执行析构过程。不能继承,由他们的功能决定
4.以数组名作函数参数时,实参数组与形参数组都不必定义长度,因此实参与形参的结合方式是地址结合,与数组长度无关。请问这句话的说法是正确的吗?
答案:B
解析:一维数组适用,二维数组就不适用了,二维数组一定要给出第二维的长度
5.以下哪项不属于STL container()
A.stack
B.queue
C.multimap
D.string
答案:D
解析:STL container分为两大类:
序列容器:动态数组vector,双端队列deque(本质是动态数组加索引),链表list
关联容器:set,map,multiset,multimap,bitset(叫bit_array更合适)
容器适配器:stack,queue,priority_queue
6.静态成员存在于内存,非静态成员需要实例化才会分配内存
非静态成员可以直接访问类中静态的成员
非静态成员的生存期决定于该对象的生存期,而静态成员生存期则与程序生命期相同
7.以下程序段的执行结果是()
double x = 218.82631;
printf("%-6.2e\n", x);
A.输出格式描述符的域宽不够,不能输出
B.输出为21.38e+01
C.输出为2.19e+02
D.输出为-2.14e2
答案:C
解析:
%:表示格式说明的起始符号,也是转义符号,有一题 printf(“%%%%”)输出几个?答案输出%% 两个
-:有-表示左对齐输出,如省略或+表示右对齐输出
0:有0表示指定空位填0,如省略表示指定空位不填
m.n m指域宽,即对应的输出项在输出设备上所占的字符数。
n指精度。用于说明输出的实型数的小数位数。没有指定n时,隐含的精度为n=6位,超过就按实际输出,不足时看是左对齐还是右对齐,左对齐在后面补空格,右对齐在前面补空格)(这里输出的字符数是8,所有符号都算上)
e格式表示以指数形式输出实数
那么这题的意思是以左对齐、指数形式、总长度m =6、小数n=2两位输出
8.如何引用一个已经定义过的全局变量?
答案:用extern关键字方式
9.下列哪两个是等同的
int b;
1.const int *a = &b;
2.const * int a = &b;
3.const int* const a = &b;
4.int const* const a = &b;
答案:3,4
解析:1.const 修饰 int ,const 修饰 *a,*a的值不能变,a的值可以改变,b的值不可以改变
2.语法错误
3.const 修饰 int * ,指针的指向不能改变,const 修饰 a,a的值不能变,b的值也不能改变
4.const 修饰 int * ,指针的指向不能改变,const 修饰 a,a的值不能变,b的值也不能改变
10.下面四个选项中,均是正确的数值常量或字符常量的选项是()
A.0.0 0f 8.9e ‘&’
B.“a” 3.9e-2.5 lel ‘\”’
C.’3’ 011 0xff00 0a
D.+001 0xabcd 2e2
答案:D
解析:
A中0f、8.9e是非法的数值常量,e后面必须有一个整数,不可以是非整数
B中“a”是字符串常量,是非法的数值常量或字符常量
C中0a是非法的数值常量,0a 中的0是表示8进制,a不能出现在8进制的数字里
D中+001是8进制的1
11.面向对象程序设计方法的优点包含:可重用性、可扩展性、易于管理和维护
12.函数变量val的内存地址位于()
void foo() {
static int val;
……
}
答案:未初始化数据段
13.有以下类定义,若有语句定义rectangle r; r.setLength(3,5); 则编译时无语法错误的语句是?
#include <iostream>
using namespace std;
class shape
{public:
virtual int area()=0;
};
class rectangle:public shape
{public:
int a, b;
void setLength (int x, int y) {a=x;b=y;}
int area() {return a*b;}
};
A.shape *s1=&r;
B.shape &s2=r;
C.shape s3=r;
D.shape s4[3];
答案:当一个类中有一个或多个纯虚函数的时候,这个类就自动成为了抽象类,即不可以实例化,shape 是一个抽象类,不能实例化对象,但是可以定义指针和引用
14.对于函数重载,下面说法错误的是?
A.函数名不同,但形参的个数与类型相同
B.函数名相同,但形参的个数与类型不同
C.函数名相同,但形参的个数与类型也相同
D.函数名相同,返回值不同,与形参无关
答案:ACD
解析:重载:函数名相同,参数列表不同(参数的个数、类型或者顺序必须不同)
15.普通函数、构造函数、友元函数、静态成员函数、内联成员函数都不能被声明为虚函数
16.在C++里,同一个模板的声明和定义是不能在不同文件中分别放置的,否则会报编译错误。为了解决这个问题,可以采取以下办法有
A.模板的声明和定义都放在一个.h文件中
B.模板的声明和定义可以分别放在.h和.cpp文件中,在使用的地方,引用定义该模板的cpp文件
C.使用export使模板的声明实现分离
D.以上说法都不对
答案:ABC
解析:
B:模板的声明和定义不能分别单独的放在.h和.cpp文件中的原因是当实例化一个模板时,编译器必须看到模板确切的定义,而不仅仅是它的声明。若在main()函数中包含.h文件,则编译器无法知道模板的确切定义,所以要在main()中包含.cpp文件,.cpp文件中又会包含.h文件,这样一来通过在main函数中包含.cpp文件就会将类的定义和声明都包含进来,编译器自然能找到模板的确切定义
17.函数模板的实例化是由编译程序在处理函数调用时自动完成的
类模板的实例化必须由程序员在程序中显式地指定
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)