笔试训练
文章平均质量分 77
2021狮子歌歌
煎和熬都是可以变美味的方式,加油也是~
展开
-
【笔试刷题训练】day_17
A:虚函数的作用是实现了多态,虚函数的实现利用了继承B:✔C:虚函数需要先去虚表中找到函数地址再进行调用,与编译期间就确定地址的静态函数相比,效率较低。✔D:必须借助父类指针 / 引用 ✔A,B,C说法都没问题D:覆盖也叫重写,函数必须是相同函数名,并且参数个数和类型都相同,题目说法❌多态的条件之一:父类的指针或引用去调用,所以引用可以作为产生多态效果的手段!子类对象 赋值给基类对象 / 基类引用 / 基类的指针是可以发生的,,即指向父类的那一部分。选项B说法是错误的但是。原创 2022-11-07 09:08:07 · 173 阅读 · 1 评论 -
【笔试刷题训练】_day16
.原创 2022-11-06 17:14:03 · 104 阅读 · 0 评论 -
【笔试刷题训练】day_15
首先,A* p = new B;这里会调用B的构造函数,B是A的子类,所以构造B的时候会先调用A的构造函数,但是在A的构造函数中会调用bar()函数,而bar是虚函数,又满足是父类的指针调用,理应完成多态。但实际上,**在构造函数没有执行完的时候是不会执行多态机制的!!原因如下:因为虚表指针是在有虚函数的情况下编译器自动添加的一个成员,它在初始化列表进行初始化的子类调用构造函数时,会先调用基类构造函数。此时未执行子类构造,子类的虚表指针还没有完成初始化,也就是说子类的虚表还没有构造完成。原创 2022-11-05 23:37:40 · 323 阅读 · 0 评论 -
【笔试刷题训练】day_14
成员是否可以访问取决于继承之后的权限,与this指针无关类中的成员函数只有一份,对于多个对象都是调用的这一个代码,那么如何区分是谁调用的该函数呢?实际上,成员函数有一个默认隐藏的形参this,每一个对象调用成员函数的时候都会把该对象的地址传递给this,这样在调用的时候就可以知道是哪一个对象调用的该成员函数了所以,this指针的作用就是A:对于.*sizeof.:?这五个运算符不可以重载。原创 2022-10-31 12:11:12 · 218 阅读 · 0 评论 -
【笔试刷题训练】day_13
因为继承就是为了使用一部分基类的成员,所以一般情况都是公有继承。√B:D:继承方式有三种:公有继承、保护继承、私有继承答案选C但是要注意: virtual inline void func(){} 这段代码是可以通过编译的!因为inline对于编译器来说就是一个建议,所以很有可能不满足内联的条件而成为一个虚函数!看选项,不管定不定义,编译器都会生成默认的析构函数。所以A、B肯定错误析构调用:先子类后父类,所以选C//定义一个纯虚函数,抽象类不能被实例化!那么什么是呢?原创 2022-10-29 21:42:56 · 591 阅读 · 1 评论 -
【笔试刷题训练】day_12
总结:在成员函数中调用delete this,会导致指针错误在析构函数中调用delete this,会导致堆栈溢出(死循环)A: 对于一个类,如果我们不显式写构造函数,编译器会自动生成一个无参数的构造函数,但是如果我们自己显式定义了,这个无参数的默认构造函数就不会生成。所以有没有无参数的构造函数取决于我们自己。B:原创 2022-10-28 12:37:59 · 245 阅读 · 0 评论 -
【笔试刷题训练】day_11
每天坚持一点点,坚持带来大改变今天是刷题的第_11天,加油!原创 2022-10-23 12:02:52 · 141 阅读 · 1 评论 -
【笔试刷题训练】day_10
MyClass* b[6] :创建一个指针数组,数组每一个元素是MyClass* 类型,所以不会调用构造函数。题目中a先声明,b后声明。所以初始化列表中无论a和b谁写在前,都是a先初始化,b后初始化。中(VS系列,gcc系列等),将空类的大小设置为1,用于标识该类创建的对象是存在的!MyClass[5]:创建一个5个对象的数组,所以调用5次构造函数。所以很简单,只需要依次取检查 行、列、主对角线、副对角线即可。初始化列表的初始化顺序 取决于 成员变量的声明顺序。对于空类,并不是0字节,在。原创 2022-10-23 10:27:30 · 414 阅读 · 1 评论 -
【笔试刷题训练】day_09
动态内存开辟和释放需要匹配使用如果不匹配的话可能会出现内存泄漏,或者程序直接崩溃对于new和delete,(假设对类A)delete p对于new[]和delete[]delete p[]所以本题中 new[5]:调用了五次构造函数delete :只会调用一次析构函数 答案选A但选项并不是很严谨,因为对于内置类型来说 new[] 搭配 delete使用不会报错,但是对于自定义类型成员new和delete必须匹配使用,否则就会崩溃!所以理应有个选项为:程序可能崩溃。原创 2022-10-22 18:59:03 · 482 阅读 · 1 评论 -
【笔试刷题训练】day_08
函数传参的时候,函数参数可以是引用也可以是指针类型。引用的底层是指针,所以引用传参的时候底层也是传递的地址,只是在语法角度看到的是传值综上几条,答案选择E,引用其实也是传递的地址!对于B:用一个类的对象赋值给一个另一个对象,说明另一个对象是已经存在的,所以会调用赋值运算符重载,不会调用拷贝构造!这一题考察了构造和拷贝构造的编译器优化问题运算符重载指的是:定义一个类之后,如果想通过该类的对象直接使用某种运算符,编译器是不支持的,因为他不知道对于这个自定义类型这种运算表示什么具体含义。原创 2022-10-21 21:43:55 · 314 阅读 · 0 评论 -
【笔试刷题训练】day_07
内联函数对于编译器只是一个建议,如果该函数没有递归、循环、并且代码较少,那么编译器就会采取内联,否则就不会采取内联的建议所以选择:C回顾:类的两种定义方式所以答案选A,类中包括数据成员和函数成员的声明B: 默认权限是私有C: 共有、私有、保护哦都可以D: 可以在类外,也可以在类里定义初始化列表是成员真正初始化的地方,初始化列表中,只能对类中非静态的成员变量进行初始化,因为静态的成员变量是不依赖于对象,只是依赖于类的!静态成员在类外部进行初始化三种必须在初始化列表进行初始化的成员。原创 2022-10-21 11:56:21 · 295 阅读 · 0 评论 -
【笔试刷题训练】day_06
补充知识:printf(格式化串,参数1,参数2…),printf的参数是可变参数格式化串:printf中的后面的参数列表按照什么格式打印%d:按照整型方式打印%f:按照float方式打印但是格式化串有规定,%后面跟上特定的字符才代表一定的格式化,比如%Q就是无效的格式,当格式无效的时候,编译器会自动忽略%所以printf(“%Q\n”,15) : 直接输出Q所以对于%%,就相当于一个%(其实这样就类似于 转义字符\\表示一个\)所以答案选择 A:%%原创 2022-10-16 22:37:22 · 207 阅读 · 0 评论 -
【笔试刷题训练】day_05
所以最终答案为xycdBCD,选D所以:one在对齐数为4和8的时候都是16字节two在对齐数为4的时候为16,对齐数为8的时候为24👉 题目链接2. 连续最大和👉 题目链接动规原创 2022-10-16 13:44:59 · 1409 阅读 · 4 评论 -
【笔试刷题训练】day_04
C/C++中各种进制的表示方法二进制:在数字的末尾加b,如101010b八进制:在数字前面加数字0,如0123十进制:数字本身,如123十六进制:数字前面加0x 或者 数字后面加h,如0x123、123h%d:十进制方式输出%o:八进制方式输出%x:十六进制方式输出所以显而易见,题目所给两个数分别是8进制和10进制,十进制123转化为8进制为173,所以选择C题目要求把flag的第二个bit位置为0那么与flag运算的数的第二个bit位应该是0,而2的二进制位0000 0010。原创 2022-10-15 20:55:56 · 486 阅读 · 1 评论 -
【笔试刷题训练】day_03
二维数组的初始化,不同的语言有些不同,有些遗忘这一题涉及到函数栈帧、大小端问题,值得思考一下题目所给是32位下小端机器,但是如果再64位机器下,结果却是: 1,2,3这是为什么呢?这就要结合体系结构来说了你可能想说,%d不是打印int类型吗?难道64位下%d是打印8个字节吗?其实所谓的打印,也是CPU先把数据取出来进行计算,然后才输出到屏幕上的,取数据的时候,是完整的取的。CPU需要先把数据取出来,然后再根据特定的打印格式去输出!原创 2022-10-14 10:22:28 · 424 阅读 · 2 评论 -
【笔试刷题训练】day_02
m.nf%e%lf可以不进行初始化,正确(2):i的地址赋值给 int const*类型 没毛病(3):p2中 const修饰的是指针指向的内容,p2指针本身可修改,正确(4):i的地址赋值给p3,p3指向的内容可修改,p3不可修改,正确(5):改变p3的指向内容,正确(6):改变p2的指向内容,错误!(7):修改p3的指向,错误!’3.5.6.这里考察的是位段的理解(1) a是一个无符号整形,大小为4字节共32位,a占19位,还剩下13位。原创 2022-10-13 10:43:59 · 578 阅读 · 4 评论 -
【笔试刷题训练】day_01
我们利用程序打印看一下,输出如图所示:可以看到,%5.3s输出的只有3个字符,并且前面似乎有两个空格%5.4s输出的有4个字符,前面有一个字符这里有一些没有注意到的知识点%m.ns:m:输出字符串的宽度n:左起截取目标字符串的n个字符,并且是右对齐,补空格所以就可以解释上面的程序了。原创 2022-10-12 12:21:33 · 126 阅读 · 0 评论