C++ 强制类型转换
继承自 C 语言的强制类型转换,存在以下不足: 没法从形式上体现类型转换的目的或者说功能,让人一眼能看出来是什么用途,遇到问题也没法根据问题类型进行针对性搜索,也看不出来是否有风险,风险类型又是什么 不做转换后的类型检查,安全由开发人员自行负责 于是 C++ 提供了四种不同的强制类型转换,方便根据不同情况选用不同的强制类型转换,方便阅读和排查问题,很多情况还都会触发编译报错或...
继承自 C 语言的强制类型转换,存在以下不足: 没法从形式上体现类型转换的目的或者说功能,让人一眼能看出来是什么用途,遇到问题也没法根据问题类型进行针对性搜索,也看不出来是否有风险,风险类型又是什么 不做转换后的类型检查,安全由开发人员自行负责 于是 C++ 提供了四种不同的强制类型转换,方便根据不同情况选用不同的强制类型转换,方便阅读和排查问题,很多情况还都会触发编译报错或...
I. 配置环境 首先,安装一个新的 ruby 版本,macOS 系统自带的默认没有写权限,不建议修改。 用 homebrew 安装这两个: brew install chruby ruby-install 安装 ruby ruby-install ruby 添加到 PATH 安装两个 gem gem install jekyll bundler II. 创建博客项目 ...
普通链表: 就是我们了解的最传统的链表,数据和一个链表指针 next 封装成一个节点,链表指针 next 指向下一个节点的头部。 缺点是数据和链表指针强耦合,整条链上的节点都是一样的类型,换个类型就要重新封装一套节点和方法,泛化能力差。 优点是高效,方便。 struct Node { int val; Node *next; }; 侵入式链表: 就是链表节点是独...
I. 基本规则 几个原则: 长度最长的基本数据类型的长度作为基本单位 以基本类型本身长度的整数倍为起点进行对齐 最终长度是基本单位的整数倍 比如: struct A { bool a; int b; }; cout << sizeof(A) << endl; // => 8 字节 int b 最长,4 字节,bool...
I. 指针的定义 基本指针: int *pa; double *pb; char *pc; MyClass *pm; 多个指针,即指针数组: int a = 1; int b = 2; int c = 3; int *pa[] = {&a, &b, &c}; // 和一般的数组一样,声明的同时初始化无需指定长度,否则需要用常量指定数组大小 cout <...
智能指针 C++11 引入的新特性。 包含三种智能指针: std::unique_ptr std::shared_ptr std::weak_ptr 对象生命周期 全局对象:程序启动时分配,程序结束时销毁 局部对象:定义时创建,离开块时销毁 局部 static:第一次使用前分配,程序结束时销毁 动态分配:显式创建,显式销毁 RAII 思想 资源...
static 在变量和函数中的使用 局部变量 默认情况下,变量的存储位置是栈,作用域是局部作用域,生命周期就是在作用域内,作用域结束就销毁。 用 static 修饰后,变量的存储位置变成了静态区,作用域没有变化,还是局部作用域,但是,初次调用到函数完成初始化,生命周期被延长,一直持续到程序结束,离开作用域并不会被销毁,后面再调用到该函数时,变量还是那个值,这叫 “可重入性”。 全局变...
总体来说,const 就是限定符,表明不可修改,更容易阅读、维护,更安全。 常量 取代了 C 语言里面的宏定义。 存储在常量区,编译器甚至可以不给它分配空间,如果编译器已经知道了常量的值,而且足够简单,不需要分配空间,可把代码优化掉。 指针 const 修饰指针类型,表示限定不可以修改指向的原始对象,不可以给非 const 指针类型赋值。 const 修饰指针名,表示指针本身不可...
给定几个顶点,组成多边形,比如,3 个点就是三角形,4 个点就是四边形,多边形包括凸多边形和凹多边形。 顶点: [x_1y_1, x_2y_2, x_3y_3, …, x_{n-1}y_{n-1}, x_ny_n] 面积: [S = \frac{ (x_1y_2 + x_2y_3 + … + x_{n-1}y_n + x_ny_1) - (y...
原理: 假设有一个三角形 $\triangle$ABC,有一点 P,如何判断点 P 是否在三角形内部呢? 如果点 P 在三角形内部,那么对于 $\overrightarrow{AB}$,假定 C 在左边,那么 P 也在左边 这个问题本来是二维的,但是可以从三维来判断方向,那么点 A、B、C、P 的 z 轴值都是 0 三维向量的叉乘: 向量 $\boldsymbol{a}=...