C++ Primer Plus第九天

单独编译

单独生成 .dll\.lib 在项目程序输出的时候选择生成类型就好了

头文件格式
#ifndef ***
#define ***
//code
#endif

存储持续性、作用域和连接性

自动存储持续性

栈:LIFO;类似弹夹
register int count_fast;将变量存储到CPU寄存器上速度更快

静态存储持续性:static

静态存储区
constexpr:常量表达式的方式
extern: 声明外部链接 在其它文件中使用必须要用它声明一下

cv-限定符:const,volatile
	volatile:值可能不定时更新,要从原始的位置读取,而不是读取缓存
	mutable:结构体的成员使用了该关键字,则不受const影响
	const:(C++中)默认情况下全局链接为外部性质,但const全局变量的链接性为内部:目的是可以在头文件中编写const变量给多数文件使用而不会报错重定义。其它文件要用extern 声明一下

对于函数:外部使用需要加const
static、extern

语言特性:
	extern "C" void spiff(int);
	extern "C++" void spaff(int);

线程存储持续性:thread_local 并发编程相关
动态存储持续性:new 非 LIFO

C++98:
	int *pi = new int(6);
	double * pd = new double(99.99);
C++11:
	struct where {double x;double y;double z;};
	where *one = new where {2.5,5.3,7.2};
	int *ar = new int [4] {1,2,3,4};
	
new失败则:std::bad_alloc异常 

new实际上是调用:
	void operator new(std::size_t);
	void operator new[](std::size_t);
	void operator delete(void *);
	void operator delete[](void *);

定位(placement)new运算符

new变体:可指定地址 new(已存在的空间 数组啥的) 类型大小
				new(number)int[10]

名称空间

语句块:
	int i = 11;
	int main()
	{
		int i = 10;
		{
			int i = 9;
			cout << ::i << endl;//输出11
		}
		return 0;
	}

空间:名称空间名字可有可无
name 名称空间名字{
	。。。
}
名称空间名字省略的话就相当于 static 
using namespace std; using 编译指令
using std::cout; using 声明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值