C/C++_2019_7_4

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44770155/article/details/94856404

有时失去不是忧伤,而是一种美丽.
当我们学会用积极的心态去对待"放弃"时,我们将拥有"成长"这笔巨大的财富!–村上春树

1.用变量a给出下面的定义:
一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数

A int *a[10]; 		B int (*a)[10]; 	
C int (*a)(int); 	D int (*a[10])(int);
正确答案:D

解析:
A为指针数组,B为数组指针,C为函数指针,D为函数指针数组

2.对于int pa[5];的描述,以下哪个选项是正确的()*

A pa是一个具有5个元素的指针数组,每个元素是一个int类型的指针; 
B pa是一个指向数组的指针,所指向的数组是5个int类型的元素; 
C pa[5]表示某个数的第5个元素的值; 
D pa是一个指向某个数组中第5个元素的指针,该元素是int类型的变量
正确答案:A

3.下列程序执行后,输出的结果为()

#include<stdio.h> 
int cnt=0; 
int fib(int n){    
	cnt++;    
	if(n == 0){
		return 1;
	}  
	else if(n ==1){
			return 2;
	}
	else{
	return fib(n-1)+fib(n-2);
	}        
} 
void main(){   
	fib(8);   
	printf("%d",cnt); 
}

A 41 	B 67 	C 109 	D 177
正确答案:B

解析:
此题考察递归调用,总共调用67次;

4.以下C语言指令:

int a[5] = {1,3,5,7,9}; 
int *p = (int *)(&a+1); 
printf(“%d,%d”,*(a+1),*(p-1));
运行结果是什么?
A 2,1 	B 3,1 	C 3,9 	D 运行时崩溃
正确答案:C

5.以下哪个选项一定可以将flag的第二个bit置0

A flag&=~2 	B flag|=2 	C flag^=2 	D flag>>=2
正确答案:A

6.print()函数是一个类的常成员函数,它无返回值,下列表示中正确的是()

A const void print(); 	B void const print(); 
C void print() const; 	D void print(const);
正确答案:C

7.以下关于纯虚函数的说法,正确的是()

A 声明纯虚函数的类不能实例化 	B 声明纯虚函数的类成虚基类 
C 子类必须实现基类的 			D 纯虚函数必须是空函数
正确答案:A

8.下列有关this指针使用方法的叙述正确的是()

A 保证基类保护成员在子类中可以被访问 	
B 保证基类私有成员在子类中可以被访问 
C 保证基类共有成员在子类中可以被访问 
D 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码
正确答案:D

解析:
3.9 this指针
3.9.1 this指针的引出
C++编译器给每个“成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
3.8.2 this指针的特性
(1)this指针的类型:类类型* const ;
(2)只能在“成员函数”的内部使用 ;
(3) this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参。所以对象中不存储this指针;
(4)this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递。

9.下列情况中,不会调用拷贝构造函数的是()

A 用一个对象去初始化同一个类的另一个新对象时 
B 将类的一个对象赋值给该类的另一个对象时 
C 函数的形参对象,调用函数进行形参和实参结合时 
D 函数的返回值是类的对象,函数执行返回调用时
正确答案:B

解析:
4.4 拷贝构造函数
4.4.1 定义
只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象 创建新对象时由编译器自动调用。
4.3.2 特性
(1)拷贝构造是特殊的成员函数;
(2) 拷贝构造函数是构造函数的一个重载形式~;
(3) 拷贝构造函数的参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用;
(4)若未显示定义,系统生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝我们叫做浅拷贝,或者值拷贝;
10.下面程序输出结果是什么?

#include<iostream> 
using namespace std;

class A{
public: 
	A(char *s){
		cout << s << endl;
	}
	~A()
	{}
};

class B :virtual public A{
public: 
	B(char *s1, char*s2) :A(s1){
		cout << s2 << endl;
	}
};

class C :virtual public A {
public: 
	C(char *s1, char*s2) :A(s1){
		cout << s2 << endl;
	}
};

class D :public B, public C {
public: 
	D(char *s1, char *s2, char *s3, char *s4) :
	B(s1, s2), C(s1, s3), A(s1) {
		cout << s4 << endl;
	}
};

int main() {
	D *p = new D("class A", "class B", "class C", "class D");
	delete p; 
	system("pause");
	return 0;
}
A 	class A class B class C class D 
B 	class D class B class C class A 
C 	class D class C class B class A 
D 	class A class C class B class D

正确答案:A

猜你喜欢

转载自blog.csdn.net/qq_44770155/article/details/94856404