C++面试

本文深入探讨C++面试中的核心知识点,包括强制类型转换、指针与引用、泛型编程、类的访问控制、继承、面向对象以及RTTI。详细讲解了各种指针类型、函数指针的使用、const修饰指针的场景、STL的组成和ACM竞赛必备的STL技巧。
摘要由CSDN通过智能技术生成

强制类型转换符

C++有四种强制类型转换符

  • dynamic_cast:将基类的指针或引用安全地转换为子类的指针或引用
  • const_cast:将常量指针或引用被转化成非常量的指针或引用,来修改常量
  • static_cast:子类指针或引用向上转换成基类(安全),基类指针或引用向下转换成子类(不安全),基本数据类型之间的转换,空指针转换成目标类型的空指针,任何类型的表达式转换成void类型
  • reinterpret_cast:用来处理无关类型之间的转换,它会产生一个新的值,这个值会有与原始参数有完全相同的比特位

指针

一级指针和二级指针

  • float(**a)[10];

    a是一个二级指针,指向一个一维数组的指针,数组元素为float类型

  • double*(*b)[10];

    b是一个一级指针,指向一个一维数组,数组元素为double*类型

  • double(*c[10])();

    c是一个10个元素的数组,数组元素为指向函数类型为没有参数且返回double的函数指针

  • int*((*d)[10]);

    同int(d)[10];d是一个一级指针,指向一个一维数组,数组元素为int*类型

  • long (*e)(int)

    e是一个一级指针,指向函数类型为参数为int且返回long的函数指针

  • int (*(*f)(int, int))(int)

    f是一个一级指针,指向函数类型为参数有两个int且返回一个函数指针的函数,返回的函数指针指向类型为参数为int且返回int的函数

函数指针和函数返回指针

  • 函数指针

    void (*f) ();

  • 函数返回指针

    void* f();

函数指针的使用

#include <cstdio>
int max(int x, int y) 
{
    return x > y ? x : y;
}
int main() 
{
    int max(int, int);
    int (*p) (int, int) = &max;
    int a, b, c, d;
    scanf(“%d %d %d”, &a, &b, &c);
    d = (
c++面试题53个问题 1.C++的三大特性 2.C和C++的区别 3.全局变量和局部变量在内存分配上有何不同 4.static的作用 5.const解释其作用 6.指针和引用的区别 7.智能指针 8.简述深拷贝和浅拷贝的区别 9.编写my_strcpy函数,实现与库函数strcpy类似的功能,不能使用任何库函数 10.请讲述堆和栈的区别 11.全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的 12.new、delete、malloc、free之间的关系 13. 头文件种的ifndef/define/endif 是干什么用的 14.TCP和UDP有什么区别 15.STL库用过吗?常见的STL容器有哪些?算法用过哪几个 16.同步IO和异步IO的区别 17.说下你对内存的了解 18.C++文件编译与执行的四个阶段 19.extern关键字的作用 20.#define和const的区别 21.结构体struct和共同体union(联合)的区别 22.C++vector和list的区别 23.结构体和类的区别 24.STLmap和set的原理(关联式容器) 25.MFC的消息机制 26.消息映射 27.列举几种进程的同步机制,并比较其优缺点 28.数组和链表的区别 29.MFC主要要用到哪几个类?及其各个类的作用 30.MFC六大核心机制 31.OnDraw和OnPaint 32.win32程序的消息响应机制是如何实现的 33.MFC的消息响应机制是如何实现的 34.WM_COMMAND命令消息处理顺序 35.MFC序列化的概念 36.PeekMessage和GetMessage的主要区别 37.WIN32创建窗口程序基本函数 38.Windows的系统消息循环占用CPU的疑问 39.队列消息与非队列消息 40.GDI对象绘图步骤 41.设备上下文DC 42.GDI位图绘制步骤 43.当模态对话框点开后,主窗口还能响应处理消息吗 44.MFC的消息分类 45.CListCtrl 虚拟列表技术 46.虚函数是怎么实现的 47.什么是内存泄漏?面对内存泄漏和指针越界,你有哪些方法? 48.变量的声明和定义有什么区别 49.sizeof是一个操作符,strlen是库函数 50.写一个“标准”宏MIN 51.简述strcpy sprintf与mencpy的区别 52.链表与数组的区别 53.简述队列和栈的异同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值