实习秋招C++知识点总结

实习/秋招时按自己需求总结的知识点,内容并不十分详细,建议选择性阅读。

C++基础

如何在main函数之前调用函数
  • C语言,采用__attribute__关键字,void f()attribute((constructor))
  • C++,构造函数构造的全局对象
static和const的作用和区别
static
  • 修饰变量,放在静态存储区,调用时返回的是上次改变之后的结果
  • 修饰函数,避免同名问题
  • 修饰成员变量,多个类的对象共有,且可在对象呗构造出来之前使用
  • 修饰成员函数,多个类的对象共有,且只能访问静态成员变量
const
  • 修饰变量,使其不可变
  • 修饰引用,避免拷贝
  • 修饰指针,常量指针,指针不可变;指向常量的指针,常量不可变
  • 修饰成员函数,函数内部不可修改成员变量
指针和引用的区别
  • 指针初始化可为null,引用必须绑定对象
  • sizeof§返回的是指针字节大小,sizeof(引用)返回的是绑定对象的字节大小
  • 指针有自己的空间,而引用只是别名
野指针
  • 指向非法内存的指针
  • 指向一个被删除对象的指针
new和malloc的区别
  • new是按类型分配的,而malloc是按字节数的大小分配的;
  • new返回的是特定的类型,而malloc返回的是void*,因此使用时需转换,如下:
char *p = new int[12];
char *p = (char*)malloc(sizeof(char)*12);
  • new的对象用delete删除,malloc的对象用free释放
  • new不仅会分配内存,还会执行构造函数
  • new是一个操作符,可以重载,而malloc是一个库函数
  • new会调用构造函数
malloc

malloc用于动态分配内存,为了避免内存碎片以及降低系统调用的开销,malloc采用内存池的方式,先申请大块内存作为堆区,然后将堆区分成若干块,以块作为内存分配的基本单位
malloc在申请内存时,若申请的大小小于128k,则采用brk系统调用,大于128k时,采用mmap系统调用

volatile关键字

百度释义:

易变的; 无定性的; 无常性的; 可能急剧波动的; 不稳定的; 易恶化的; 易挥发的; 易发散的;

指那些会被编译器之外的,如操作系统,硬件或其他线程修改的变量,被修饰为volatile的变量不会被编译器优化,所谓的优化是指:

编译器读取一个变量时,会定位到这个变量的地址里读,下次再读时,就直接取出这个值,而不用再访问地址

但是被volatile修饰的变量,编译器每次读取都会从变量所在的地址里读(这是因为之前读过的变量可能会被操作系统/硬件/其他线程篡改)

extern关键字

https://blog.csdn.net/weixin_37569048/article/details/83378642
修饰变量,在a.c中定义,如int i=2;在b.c中使用,需

extern int i;

extern “C”

目的是为了C++按照C的方式编译,从而实现C和C++的混合编程
比如用C语言开发了一个DLL库并导出,为了能够让C++也能调用,需要在C++中使用 extern “C” 来强制编译器不要修改函数名
在C++中:

// cpp_test.h
# ifndef CPP_TEST_H_
#define CPP_TEST_H_

#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
}
#endif
#endif
  • C++的运算符重载
    可以理解为编译时多态,如对于函数
    void f(int i, int i)
    编译器会将其编译为
    f_int_int
    即函数名+参数类型的组合,从而实现运算符重载,而C语言是不会做这个修改的,因此按C++编译的函数,无法在源C文件中找到对应的目标文件,从而报错
final和override关键字

C++11中,在类后面加final关键字使其不可被继承:

class A final { // 不可被继承

};

使用override关键字显示指明重载了某一函数

实现一
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值