持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
选择题
函数的形参是一个应用类型,所以我们直接传变量本身就可以,所有选A
new [5]
会开辟连续的空间,同时会调用构造函数5次,对于new []
开始的空间,要用delete []
进行释放,如果用delete
进行释放,很有可能会报错,但是选项没有,他会释放一个空间,调用一次析构函数。
new
动态申请的内存在堆区。
要使用静态的数据成员的时候吗,在静态成员名前面加上类名和作用域符号(
::
),静态成员属于类的所有对象,要在类域外面进行定义初始化,当然静态变量要加上static
。
类的默认访问权限是私有
private
。
没有任何参数说明是一元运算符的重载,又因为没有参数所有是前置,比如前置
++
,当然对于后置++
我们要在参数列表中加上一个参数,该参数没有实际意义,只是为了区分前置后后置而已。
obj1()1
会调用构造函数,打印1,obj2(2)
也会调用构造函数,打印1,obj3(obj1)
会调用拷贝构造,打印2,最后依次析构打印4,所有选B
静态成员不能在类内初始化,静态成员为类对象所共有的,可以被类对象调用,既然是成员就可以被访问限定符的限定。公共成员可以直接用类名进行调用。
如果把构造函数设成私有,那么在
new
一个空间的时候就会报错,如果把析构函数设成私有,那么可以用new
类创建,但是不能直接用delete
释放空间。
下面正确的为4,6,7
编程题
class UnusualAdd {
public:
int addAB(int A, int B) {
if (A == 0) return B;
if (B == 0) return A;
int a = A ^ B;//求和后当前位的数据
int b = (A & B) << 1;//求和后进位的数据
return addAB(a, b);//递归两个数进行相加,任意为0时截止
}
};
本道题就是一道深度搜索,我们规定行走的方向,先向右,在往下,当不能往右,往下的时候就要换方向,当走到终点的时候返回,且记录下来该次方案,任何回到上一步,直到把路走完。