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.

相关推荐
来两个炸鸡腿2 小时前
【Datawhale组队学习202602】Easy-Vibe task03 动手做出原型
人工智能·学习·大模型·vibe coding
浅念-2 小时前
C++ STL vector
java·开发语言·c++·经验分享·笔记·学习·算法
qyhua2 小时前
春节怀旧:翻出 20 年前的 VB6 书籍与老 CPU 记忆
笔记·其他
winfreedoms2 小时前
ROS2主题通讯——黑马程序员ROS2课程上课笔记(2)
笔记
锅包一切2 小时前
【蓝桥杯JavaScript基础入门】二、JavaScript关键特性
开发语言·前端·javascript·学习·蓝桥杯
was17213 小时前
你的私有知识库:自托管 Markdown 笔记方案 NoteDiscovery
笔记·云原生·自部署
前路不黑暗@13 小时前
Java项目:Java脚手架项目的文件服务(八)
java·开发语言·spring boot·学习·spring cloud·docker·maven
崎岖Qiu13 小时前
【计算机网络 | 第十一篇】图解交换机的自学习功能
网络·学习·计算机网络
科技林总13 小时前
【系统分析师】8.0 项目管理
学习