48天笔试强训——第12天

144 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情


选择题

image.png

引用:引用是对象的别名,并没有给它开辟空间,引用在声明的时候就要初始化,而指针不用,一但引用之后,该引用就不可以引用其他的对象,但是它指向的空间是可以改变的,没有空引用,但有空指针。

image.png

析构函数可以在类体内定义,可以先在类类内声明,在类外定义,一个类只有一个析构函数,因为该函数不能重载,析构函数的函数名和类名相同,只不过是加了一个~

image.png

首先要有operator这个关键字,然后加上+运算符,同时要有参数,参数是类,同时还要有返回值,对于加法运算符的重载,它要返回加的结果,所以返回值也是一个类。

image.png

c1是个类会调用构造函数,c2是个指针并不会调用构造函数,c3也是一个指针,但是用new的时候会自动调用构造函数,c4是c1的别名并没有调用构造函数。

image.png

类和c语言中的结构体还是不同的,c语言中的结构体里面不能声明函数。而类里面就是可以。类和对象的关系就是抽象和具体的关系。

image.png

一个类可以实例化出很多对象,类是对某一类对象的抽象,类和对象的关系是一直数据类型与变量的关系。

image.png

这段代码有什么错误呢? 首先delete释放的空间应该为动态开辟,当该对象没有动态开辟,不就错误了嘛,即使它是动态开辟的空间,当delete的时候,会自动调用析构函数,这样吧会造成死递归。其次,this的类型为类* const类型,意思就是this指针的本身的值是不可以改变的,那么this=NULL该代码就是错误,在编译的时候就会报错。

image.png

类可以有多个构造函数,但是每个类只会有一个析构函数,而对于拷贝构造并不是每个类都必须的,当我们没有自己实现的时候,会生成默认的拷贝构造函数,对于每个类都有一个什么类型的构造函数是我们所不能确定的。

image.png

静态的成员函数没有this指针,友元函数也没有this指针,不是类从成员函数也没有this指针。

image.png

堆的开辟需要向操作系统递交请求,所以受操作系统的限制,一般来说栈的大小都是很小的。 堆必须要动态的申请,栈既可以动态的申请也可以静态的分配。

编程题

二进制插入

首先把m向左移动j位,返回和n和m|的结果就行。

查找组成一个偶数最接近的两个素数

对于该题,我们应该找到该数一半的位置位于哪两个素数之间,然后从中间向两边进行查找判断 怎么找该数一半所处的位置:如果一半等于素数,就返回该素数的位置,如果处于两个素数中间就返回前面那个素数的位置。怎么查找判断:首先记录下来该位置a,和下一个位置b(a+1),如果a+b>n,a--; 如果a+b<n,b++;相等就找到了这两个素数的位置。