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.

相关推荐
智学AI1 分钟前
AI博主写作素材管理方法分享:资料归集、笔记关联与文档归档
人工智能·笔记
架构师伯子明6 分钟前
FFmpeg C++学习(一):编译和demo
开发语言·c++·学习
叼烟扛炮18 分钟前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
weixin_4481199423 分钟前
Datawhale Jev Cookbook 202610 笔记5
笔记
程序员梅雨24 分钟前
【从零开始学习数据仓库 | 第二篇】: 拉链表 & 数仓分层
大数据·数据仓库·学习
一木 之林1 小时前
Dify学习笔记 04 · 检索底座:Embedding、Rerank与向量数据库(第46-54集)
笔记·学习·embedding·dify
ljt27249606611 小时前
Python笔记(十一)--Numpy(一)
笔记·python·numpy
芯思路1 小时前
STM32开发学习笔记之十【AI部署】
笔记·stm32·学习
憧憬成为java架构高手的小白2 小时前
langgraph4j学习
学习
江屿风2 小时前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx