exceptional C++
不同的
静态比动态高效
模板元编程 tepleate meta-programming
KDE qt
GNAME wX widget eexexex
智能指针
内置类型 不需要我们自定义
整形
bool
char :signed char,unsigned char, wchar_t char16_t char32_t 16默认就是占2个字节,char32_t, 制定
int int, unsigned int
long: long, unsignedl long int
long long: long long,unsignedl long long
浮点型:
double:
float:
long double: 扩展精度的浮点行
复合类型:
数组:T[]
指针:T*
引用:T&
自定义类型 用四个关键字 创建我们自己的新的类型
enum,struct,union class 机制
typedef using 产生类型别名
void 类型 void可以作为模板的类型
C不把他当作类型 , C++把他当作类型
long long 至少64位大小的整形值
C++ bytes=一个字节, =8bit 以bytes为基本单位
char 1个字节
可以unsiged 或者signed类型, 实现就是C++编译器, 主要是厂商的不同, 大多数编译是实现为signed char
signed unsigned, 是正负号的 在计算机中是 内存表示不一样,
按有符号解读 -(2^7-1)
按无符号结构解读 2^8-1
通用寄存器的长度, 指针寻址, 一次只能跳四个bit,,
long double, 一次占
一个汉字一个字符,占三个字节 中日韩
一个汉字占两个,三个,
uint8_t 固定确定大小,主要用到跨平台,
utf8 是一个汉字占3个字节
gbk 是一个汉字占2个字节
通过判断某一位的字符是否大于0x80,如果大于则为双字节字符,否则为单字节字符
abc轩辕,5个字符
abc 这三个字母是按单字节(一个字节)存储, 英文字符
汉字是按双字节存储(一个字符按两个字节存储) 汉字
1个字符是8位,8个比特 128个不同的值, 一个值对应一个值 英文字母、数字、符号
2个字符是16位,16个位, 128*128, 一个值对应一个汉字
ctrl+all+l 锁屏
u16''
0x1010
U'轩' ->char32_t UFADEBEEF
u ‘轩’ -> char16_t DEAD
25 默认是int类型, 就是signed int类型的简写, 默认就是这样
0x是十六进制的文字常量
25U 表示是无符号整形
16. 默认是double,不是float类型
12f 是不对的
12.f是 正确的语法
16. 2.08 都是double类型
12f 12.F 是float类型 不加后缀都是double 类型
8位整形值,int,
S EEEEEE FFFFFFFFFFFFF;
16,20s/sizeof(\([^)]\+\))/numeric_limits<\1>/g
^是取反集
16.20s/
“abc” 是 const char *
R "(abc"\n")" 这里都不是成对出现的, 他的语法格式是 R"()"
主要是用来进行正则匹配的,
R“x()x” 修改边界的字符串; 比如说都是匹配
-std=c++11,打开C++11的标准的
u8“轩辕ab” UTF-8
U "轩辕ab"
cleasr
一个民另可以 是与
/huw
void foo(); typedf com
声明的作用, 是告诉编译器,我的名字关联什么,
对与类型基级别
对于对象的,声名, 对象即声明,
声明可以有多次, 但是定义只有一次
别处,只要不在同一个作用域的,
5种存储方式
外部存储,静态存储,寄存器存储,自动存储,
word:
__cpp
::获取全局的作用域,
对象的定义:
一是分配内存
二是内存那块区域的初始化
//内置类型, 不调用构造函数
内置类型的默认构造函数 把他0
int *p=int*();
局部对象是不调用构造函数的, 也就是不分配内存
全局,名字空间, 静态 给他分配为0,
统一的初始化语法,
int n{9} 默认初始化
int n=9; 构造(初始化); 对象n不存在
n=9; 赋值 //对象n存在
text, 程序加载到 这个程序的进程中;
text,data,bss,stack,heap
局部非静态放到栈区
全局,名字空间,静态,是放在数据区 全局静态
占里面分配内存指向,
new 三步
1,分配内存
2,初始化
3,返回指针
指针p=nullptr;//
全局未初始化区,在main 函数执行之前,来初始化
最好任何一个名字都有作用域
void (*Func)(int,int,double)
void useF(Func(fun))
{
fn(100,100,0.5)
}
//
int f()
{
int n;
return n; 是先拷贝再销毁, 而不是销毁后再
}
int & fun()
{
static int m=1;
return 0;
}
存储类型+存储变量+
运算符 和操作符 本质是一样的