cpp学习笔记

1.静态类型、动态类型、静态绑定、动态绑定的定义

静态类型是声明类型,在编译期间确定;动态类型是目标所指对象的类型,在运行期间确定。

静态绑定是编译器发生,对于非虚函数的内容,动态绑定是运行期间发生

2.应对软件需求变化的编码

应该在设计之初就提前预想到需求可能会变化,编写适合的代码。具体来说就是比如使用接口。

3.const char*和string的关联

string底层是用char数组实现,string和const char*可以互相转换,前者转后者用方法c_str,后者转前者之间赋值或者构造。

4.printf的原理

函数的参数会被放入栈中,而参数是从右到左放入栈中,根据第一个参数就能直到要格式化打印多少数据,这样就能匹配。

5.int main(int argc,char* argv[])

argc是函数调用参数个数,包括文件名,argv存储的是参数,是用char*去存储。

6.static成员和普通成员的区别

生命周期不同:static成员是类的开始和销毁存在,而普通成员是对象存活的时候存在。

共享方法不同:static是全对象共享,普通成员是对象独有。

初始化方式不同:static是类外初始化,普通成员在类内初始化

使用方法不同:static不和对象绑定,可以通过类名访问

7.指针和引用传参的区别

都可以修改实参的内容;区别是指针仍然是一个变量,不过当结构体很大时指针使用的变量相比就很小。需要改变内容的时候都可以使用。

8.分配内存的底层实现,malloc

使用brk和mmap分配逻辑内存空间,当实际使用的时候利用缺页中断分配物理内存。

9.Session和Cookie区别

都是存储的用户信息,cookie是存储在客户端浏览器的,session是存储在服务器端的,session存储的信息比cookie多,理论上不受限制。

在访问的时候服务器响应的时候会发送set-cookie给客户端,客户端会在再次发送请求的时候带上cookie,这样服务器能检测到cookie对应的session继续操作。

10.post和get发送数据为什么更安全?、

因为post不会在地址栏携带数据,但本质上post使用http都是明文发送,可以被抓包,使用https才是安全的网络协议。

11.网络协议分层的原因

设计上更加独立、维护起来更加容易、更改内容更加灵活、大的程序设计都需要分层,而计算机网络的通信本质上也是一个程序,比如二层设备三层设备代表的就是检查二层头的程序,检查三层头的程序。

12.内存对齐

内存对齐的原因是cpu可以更快速地访问;类的成员变量相对起始位置的偏移会是变量大小的整数倍,类的结构体大小会是类最大成员变量的整数倍。

可以修改内存对齐的方式。

13.阻止类的对象生成的方法

把构造函数声明成private并且把new也声明成private。这样只有使用类的创建方法才能创建。

14.计数类实例化的个数的方法

在构造函数、拷贝构造、赋值构造中对static的变量加1,在析构函数中对此变量减1.

相关推荐
詩不诉卿几秒前
Zephyr学习之mcuboot的最简单使用记录
学习
MOON404☾4 分钟前
R语言EDA学习笔记
笔记·学习·数据分析·r语言·eda
Shining059610 分钟前
CPU 并行编程系列《CPU 性能优化导论》
人工智能·学习·其他·性能优化·infinitensor
IT界的老黄牛13 分钟前
【IT老齐098 笔记】京东实例讲解如何进行系统架构容量评估
笔记·系统架构
sealaugh3217 分钟前
react native(学习笔记第一课)环境构筑(hello,world)
笔记·学习·react native
菩提小狗19 分钟前
第20天:信息打点-红蓝队自动化项目&资产侦察&企查产权&武器库部署&网络空间__笔记|小迪安全2023-2024|web安全|渗透测试|
笔记·安全·自动化
菜菜小狗的学习笔记24 分钟前
黑马程序员java web学习笔记--后端进阶(三)Maven高级
java·笔记·学习
清空mega24 分钟前
动手学深度学习(李沐)笔记:线性代数(Linear Algebra)+ PyTorch 实现
笔记·深度学习·线性代数
YangYang9YangYan26 分钟前
2026大专商务英语专业学习数据分析的价值分析
学习·信息可视化·数据分析