kkbC++多选题

答案

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{}; //可以
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据您提供的链接图片要求,可以编写一个名为CarRentalRecord的实体类,包含以下属性: - rentalId:租车记录ID,类型为int - renterName:租车人姓名,类型为String - carModel:租用车型,类型为String - rentalTime:租车时间,类型为Date - returnTime:还车时间,类型为Date - rentalFee:租车费用,类型为double 代码如下所示: ```java import java.util.Date; public class CarRentalRecord { private int rentalId; private String renterName; private String carModel; private Date rentalTime; private Date returnTime; private double rentalFee; public CarRentalRecord(int rentalId, String renterName, String carModel, Date rentalTime, Date returnTime, double rentalFee) { this.rentalId = rentalId; this.renterName = renterName; this.carModel = carModel; this.rentalTime = rentalTime; this.returnTime = returnTime; this.rentalFee = rentalFee; } // getter and setter methods public int getRentalId() { return rentalId; } public void setRentalId(int rentalId) { this.rentalId = rentalId; } public String getRenterName() { return renterName; } public void setRenterName(String renterName) { this.renterName = renterName; } public String getCarModel() { return carModel; } public void setCarModel(String carModel) { this.carModel = carModel; } public Date getRentalTime() { return rentalTime; } public void setRentalTime(Date rentalTime) { this.rentalTime = rentalTime; } public Date getReturnTime() { return returnTime; } public void setReturnTime(Date returnTime) { this.returnTime = returnTime; } public double getRentalFee() { return rentalFee; } public void setRentalFee(double rentalFee) { this.rentalFee = rentalFee; } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值