std详解
(cout和endl都属于std)
C++是强语法的,所有变量和函数必须有类型
对结构体
在c中,引用结构体必须加struct
在C++中可以忽略
c中结构体只能定义变量不能定义成员函数,C++中可以
在c中
在C++中
调用
C++新增bool类型(1字节):true(1值)和false(0值),非0值会自动转化为true(1值)
三目运算符
a>b?a:b(a>b?大于选a,不大于选b)
在c的返回值不能被赋值,返回值是数值,a>b?a:b=100是错误的
在C++中可以被赋值,返回值是变量本身
Const
在c中
例:在fun.c创建const
在其他文件使用需要先申明
const修饰变量名,变量名为只读,用户不能通过变量名进行修改赋值(num=10,错误),但可通过地址修改(注:局部的const才适用)
总结:const修饰全局变量,变量名只读,内存空间在文字常量区(只读),不能通过地址修改内容(例:num)。const修饰局部变量,内存空间在栈区,可以通过地址修改(例:data)。(为外部连接)
在C++中
在fun.c中定义const intnum=100;extern申明后不识别num
在C++中出现在所有函数之外的const作用于当前文件(对其他文件不可见,默认为内部连接)
extern 转化为外部连接
C++中,对于基础类型,系统不会给data开辟空间,放入符号表中
取地址时会分配空间。此外,当以变量形式直接初始化const修饰的变量时,系统会直接开辟空间,不产生符号表
对于自定义数据类型(结构体,对象),会分配空间
总结:
- const int data=10;\\data先放入符号表
- 对data取地址,系统会为data分配空间
- const int a=b;\\b是变量名,系统直接给a开辟空间,而不放入符号表
- const修饰自定义数据,系统为自定义数据开辟空间
可以用Const替换#define
宏作用于是整个文件,const视定义情况而定
宏不能作为命名空间的成员,const可以
注:本文档仅学习总结