常见C++基础题目

1.memcpy函数实现及其优化

1.png
2.png

3.png

这种情况从后向前复制

4.png

2.STL中容器的实现
3.C++ String类的实现
4.给定N张扑克牌和一个随机函数,设计一个洗牌算法
5.25匹马 5个跑道,每次只能跑5匹,用最少的次数选出最快的前3匹

1.png
2.png
3.png

5.智能指针

智能指针.png

指针2.png

6.单例模式
7.如何定义一个只能在堆上(栈上)生成对象的类?
8.struct 字节对齐详解
9.浅谈C++中指针和引用的区别
10.const和define的区别
11.define和inline有什么区别
12.NULL指针、零指针、野指针
13.new和malloc的区别

  1. malloc/free是C语 的库函数,new/delete是
    C++的操作符
  2. malloc仅仅 来分配内存, 不会执 相应的构
    造函数,函数返回值为void*, new会调 相应 的构造函数,返回的是相应对象类型的指针

14.C++中成员函数能够同时用static和const进行修饰?
15. const关键字用法

  1. 于全局变量,与普通全局变量不同的是。它表明 该变量的作 域仅限于当前cpp 件。因此当其他
    cpp 件中同样出现同名的static变量时,他们是不 同的独 的变量

2.静态成员变量不受const成员函数限制,可以被修改。
3.对于不修改成员变量值的函数 般都要声明为是const函数

16.C++四种类型转换

cast1.png
cast2.png
cast3.png

cast4.png

17.C++虚函数
虚函数实现动态绑定,提 程序灵活性
实现动态绑定的两个条件:

  1. 相应成员函数为虚函数
  2. 使基类对象的引用或指针进行调用

18.C++ 虚函数表解析
19.C++析构函数为什么要为虚函数
20.访问虚函数和普通函数哪个快?
普通函数更快.普通函数的地址在编译期就已经确定了,调用这个函数只需要直接用对应的地址就可以了.调用虚函数时,首先要找到该对象的地址,然后找到该对象虚函数表指针(VPTR)的位置(为了提高查找速度,通常就是该对象的地址),而对象的构造是要到运行时才开始的,这个虚函数表指针也是在运行时才有的,所以虚函数地址是运行期确定的,找到VPTR后根据其指向的虚函数函数指针表得到具体需要调用的函数的地址,相比于普通函数,这个过程复杂,会比较慢.
21.内联函数、构造函数、静态成员函数可以
是虚函数吗

22.绝不在构造函数或析构函数中调用虚函数
简要结论:
1. 从语法上讲,调用完全没有问题。
2. 但是从效果上看,往往不能达到需要的目的。
Effective 的解释是:
派生类对象构造期间进入基类的构造函数时,对象类型变成了基类类型,而不是派生类类型。
同样,进入基类析构函数时,对象也是基类类型。
所以,虚函数始终仅仅调用基类的虚函数(如果是基类调用虚函数),不能达到多态的效果,所以放在构造函数中是没有意义的,而且往往不能达到本来想要的效果。
23.C++虚继承与其他继承类的sizeof()大小详解
24.C++ 对象的内存布局(上)
25.C++ 对象的内存布局(下)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,149评论 1 51
  • 1. 结构体和共同体的区别。 定义: 结构体struct:把不同类型的数据组合成一个整体,自定义类型。共同体uni...
    breakfy阅读 6,450评论 0 22
  • 1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”? 答:首先,extern是C/C...
    曾令伟阅读 4,390评论 0 4
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 7,982评论 0 3
  • 一个博客,这个博客记录了他读这本书的笔记,总结得不错。《深度探索C++对象模型》笔记汇总 1. C++对象模型与内...
    Mr希灵阅读 10,985评论 0 13