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.

相关推荐
Xudde.5 小时前
班级作业笔记报告0x04
笔记·学习·安全·web安全·php
晓晓hh6 小时前
JavaSE学习——迭代器
java·开发语言·学习
421!7 小时前
GPIO工作原理以及核心
开发语言·单片机·嵌入式硬件·学习
AI成长日志7 小时前
【笔面试算法学习专栏】双指针专题·简单难度两题精讲:167.两数之和II、283.移动零
学习·算法·面试
zzh0818 小时前
MySQL高可用集群笔记
数据库·笔记·mysql
小手指动起来8 小时前
保姆级提示词工程学习总结(含实操示例+工具推荐)
人工智能·学习·自然语言处理
绛橘色的日落(。・∀・)ノ8 小时前
Matplotlib实践学习笔记
笔记·学习
chase。8 小时前
【学习笔记】AGILE:把人形机器人强化学习从“玄学”变成“工程学”
笔记·学习·敏捷流程
久菜盒子工作室8 小时前
高等教育学|第一章高等教育概述
经验分享·笔记·课程设计
bu_shuo9 小时前
git练习学习网站【中文网站】
git·学习