kkbC++多选题
- 31、引用与指针的区别
- 32、static的说法正确的是
- 33、虚函数和内联函数的说法正确的是
- 34、必须使用初始化列表进行初始化的是
- 35、多态的实现方式有哪些
- 36、继承的缺点有哪些
- 37、组合的优点有哪些
- 38、属于右值的是()
- 41、map插入方式有几种?
- 43、野指针时怎么产生的
- 44、const与#define的区别
- 48、如何禁止被继承()
- 50、c++的标准流对象
- 51、关于模板函数说法正确的是()
- 53、关于模板类的使用说法正确的是()
- 55、哪些是编译期数据()
- 56、关于实现模板元编程中的while循环的说法正确的是()
- 57、关于模板元编程中实现分支判断的说法正确的是()
- 58、下面代码是交换两个变量,以下代码能正确执行的是:
- 59、能指向函数 void print(int n) 的函数指针的是()
- 60、能指向类成员函数,下面成员函数的函数指针的是()
- 66、function对象可以指向的对象是()
- 67、计算int arr[100]中的偶数个数,使用count_if时第三个参数可以使用()
- 69、在c++11中,代码 get(12,‘A’) 能正确编译的是()
- 71、关于placement new的说法正确的是()
- 73、模板不定参数如何展开()
- 77、纯虚类和纯虚函数说法正确的是
- 78、防止类被外部实例化的方式有哪些
- 85、能够正确初始化A对象的有哪些()
31、引用与指针的区别
指针和引用的自增运算结果不一样
sizeof的大小不一样
引用定义时必须初始化并且不能改变
32、static的说法正确的是
可以隐藏变量和函数
static变量默认是0
33、虚函数和内联函数的说法正确的是
虚函数是运行时确定
内联函数是编译时替换的
虚函数不可以是内联函数
34、必须使用初始化列表进行初始化的是
引用成员
常量成员
当调用一个成员类的构造函数,而它拥有一组参数时
当调用一个基类的构造函数,而它拥有一组参数时
35、多态的实现方式有哪些
重载、模板、覆盖、虚函数
36、继承的缺点有哪些
父类的内部细节对子类是可见的
子类与父类是一种高耦合,违背了面向对象思想。
子类从父类继承的方法在编译时就确定下来了,所以无法在运行期间改变从父类继承的方法的行为。
如果对父类的方法做了修改的话(比如增加了一个参数),则子类的方法必须做出相应的修改。
37、组合的优点有哪些
当前对象只能通过所包含的那个对象去调用其方法,所以所包含的对象的内部细节对当前对象时不可见的。
当前对象与包含的对象是一个低耦合关系,如果修改包含对象的类中代码不需要修改当前对象类的代码。
当前对象可以在运行时动态的绑定所包含的对象。可以通过set方法给所包含对象赋值。
38、属于右值的是()
b+c的返回值
字符串"hello world"
int func()的返回值
lambda表达式
41、map插入方式有几种?
用insert函数插入value_type数据
用insert函数插入pair数据
用数组方式插入数据
在insert函数中使用make_pair()函数
43、野指针时怎么产生的
指针p被free或者delete之后,没有置为nullptr
指针操作超越了变量的作用范围
指针变量没有被初始化
44、const与#define的区别
const定义的常量是变量带类型,而#define定义的只是个常数不带类型
const不能重定义,而define可以通过#undef取消某个符号的定义,进行重定义
define预处理后,占用代码段空间,const占用数据段空间
define只是简单的字符串替换没有类型检查。而const是有数据类型的,是要进行判断的,可以避免一些低级错误;
define只在预处理阶段起作用,简单的文本替换,而const在编译、链接过程中起作用;
48、如何禁止被继承()
基类定义为final类
基类构造函数定义为private
50、c++的标准流对象
cout、cin
51、关于模板函数说法正确的是()
模板函数最终会编译成多少个函数是可以确定的
使用模板函数会导致编译时间变长
53、关于模板类的使用说法正确的是()
模板类中可以有模板方法
全特化模板类不能单独定义
55、哪些是编译期数据()
static constexpr typedef enum
56、关于实现模板元编程中的while循环的说法正确的是()
必须借助元数据
需要有递归表达式
需要使用特化模板来中止循环
57、关于模板元编程中实现分支判断的说法正确的是()
模板特化来实现分支
模板的偏特化实现分支
58、下面代码是交换两个变量,以下代码能正确执行的是:
template<class T>
void swap(T&& a, T&& b){
T c = a;
a = b;
b = c;
}
int a = 123, b = 456;
swap(move(a), move(b));
59、能指向函数 void print(int n) 的函数指针的是()
void (*pFun)(int) = print;
typedef void (*pFUN)(int);
pFUN pfun = &print;
60、能指向类成员函数,下面成员函数的函数指针的是()
class Base{
void print(int n){}
}
typedef void (Base::*pClassFun)(int);
pClassFun p = &Base::print;
void (Base::*pClassFun)(int) = &Base::print;
66、function对象可以指向的对象是()
普通函数 仿函数 lambda表达式 类成员方法 类成员属性 类静态方法
67、计算int arr[100]中的偶数个数,使用count_if时第三个参数可以使用()
//method1:
std::count_if(arr, arr+100, [](int n){ return n%2 == 0; })
//method2:
struct check{
bool operator()(int n){
return n%2==0;
}
};
std::count_if(arr, arr+100, check());
//method3
bool check(int n){
return n%2 == 0;
}
std::count_if(arr, arr+100, check);
//method4
bool check(int n){
return n%2 == 0;
}
std::count_if(arr, arr+100, &check);"
69、在c++11中,代码 get(12,‘A’) 能正确编译的是()
//method1:
auto get(int a, int b) -> decltype(a + b){
return a + b;
}
//method2:
template <class T, class U>
auto get(T a, U b) -> decltype(a + b)
{
return a + b;
}
71、关于placement new的说法正确的是()
可以在栈空间创建对象
不会申请内存,只会调用构造函数
可以在堆空间创建对象
不可以delete,而要显示调用析构
73、模板不定参数如何展开()
要有递归表达式
使用特化模板来中止递归
使用普通函数来中止递归
77、纯虚类和纯虚函数说法正确的是
有纯虚函数的类就是纯虚类
纯虚类的子类也可以是纯虚类
78、防止类被外部实例化的方式有哪些
删除默认构造函数
将构造函数定义为非公有
定义一个无用的纯虚函数
85、能够正确初始化A对象的有哪些()
struct A{
A(){ }
A(int a, int b){ }
};
int main(){
A p = {1, 2}; //可以
A p{1, 2}; //可以
A* p = new A{1,2}; //可以
A* p = new A{}; //可以
A p{}; //可以
}