当前位置:网站首页>百日刷题挑战--错题01day

百日刷题挑战--错题01day

2022-08-10 16:39:00 不虚此行-Rui

1.在 32 位编译器上,设有定义

1

char *str1 = "Hello", str2[] = "Hello"

则以下语句

1

 printf("%d %d"sizeof(str1), sizeof(str2)); 

的输出结果是(6,6)

解析:

str1是指针 大小为4字节

str2是字符数组  大小为6个字节(包含/0);

 2.在C++中,定义结构体类型struct时,不能定义成员函数,只有class可以定义成员函数。

解析:错误  c语言中struct不可以定义成员函数,c++可以,包括继承(面试题 : struct和class的区别)

 3.下列程序输出什么?

#include <iostream>
using namespace std;
class A
{
public:
    A()
    {
        cout << "1";
    }
    A(A &a)
    {
        cout << "2";
    }
    virtual ~A()
    {
        cout << "3";
    }
};
 
class B: public A
{
public:
    B()
    {
        cout << "4";
    }
    B(B &b)
    {
        cout << "5";
    }
    ~B()
    {
        cout << "6";
    }
};
 
int main()
{
    A *pa = new B();
    delete pa;
    return 0;
}

 答案:     1  4  6  3

解析:在继承中构造和析构顺序

B继承了A,所以先构造A再构造B,然后先析构B在A   (这里没有拷贝)

   

 3.下列表达式结果()----strs  *ptrs分别是?

1

2

3

4

5

6

std::string str1("trend");

std::string str2("micro");

std::string& strs = str1;

std::string* ptrs = &str1;

strs = str2;

ptrs = &str2;

strs="micro"   *ptrs="micro"

解析:strs是str1的别名  strs=str2 相当于 str1=str2;    (str1的内容也被修改)

ptrs指针指向str2可以被改变(面试题:引用和指针的区别)

在32位系统环境,编译选项为4字节对齐,那么sizeof (A)和sizeof (B)是______。

1

2

3

4

5

6

7

8

9

10

11

12 

13

struct A {

    int a;

    short b;

    int c;

    char d;

};

struct B {

    int a;

    short b;

    char d;

    int c;

};

答案16 12 

解析: 结构体第一个成员从偏移量0开始,之后的成员变量从对齐数的整数倍开始

最后的结果也是对齐数的整数倍

 面试题:结构体对齐方式

 

关于纯虚函数和抽象类的描述中,(  )是错误的。

A.纯虚函数是一种特殊的虚函数,它没有具体的实现;
B.抽象类是指具有纯虚函数的类;
C.一个基类声明有纯虚函数,该基类的派生类一定不再是抽象类;
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出;

答案:c

解析:

含有纯虚函数的类是抽象类,不能生成对象,只能派生.派生的类的虚函数没有被实现,那么他的派生类还是抽象类,。如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类了

假设C语言程序里使用malloc申请了内存,但是没有free掉,那么当该进程被kill之后,操作系统会()

正确答案: D   你的答案: A (错误)

A.内存泄露
B.segmentation fault
C.core dump
D.以上都不对

内存泄漏只发生在程序运行中

 

关于C++中的友元函数说法正确的是()

正确答案: B C   你的答案: A B C (错误)

A.友元函数需要通过对象或指针调用
B.友元函数是不能被继承的
C.友元函数没有this指针
D.友元函数破环了继承性机制

解析:友元函数不具有传递性,继承性,双向性

也不具有this指针,成员函数的概念

 面试题:

struct和class的区别?

  • struct默认访问权限public,class默认访问权限private
  • 默认继承权限不同 struct默认继承权限public class默认继承权限private

结构体对齐方式

  • 第一个成员在结构体偏移量为0的地址处;
  • 其他成员变量要与自身类型的整数倍地址处对齐
  • 结构体的总大小为对齐数(默认对齐数与成员类型最大值的最小值)的整数倍
  • 如果出现嵌套情况,嵌套结构体对齐到最大对齐数的整数倍

引用和指针的区别

  •  引用必须初始化,不能被更改,指针不必须初始化,可以被更改
  • 指针可以指向空,不存在指向空值的引用
  • 对引用操作就是对目标变量直接操作,指针则是对指向的变量的间接操作
原网站

版权声明
本文为[不虚此行-Rui]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_58389786/article/details/126262065