#include <iostream>

 

1 static_assert

2 std::nothrow

3 std::ref()

4 std::string

 

1 static_assert

 

执行编译时断言检查

语法

static_assert ( bool_constexpr , string ) (since C++11)

解释

bool_constexpr一个布尔常量表达式进行评估

string字符串文字,会出现编译错误,如果bool_constexpr是假的

 

//调试代码,迅速找出代码错在哪一行

 

 1 #include <iostream>
 2 
 3 void main()
 4 {
 5     int num(10);
 6     short sh(10);
 7 
 8     //调试代码,迅速找出代码错在哪一行
 9     static_assert(sizeof(num) >= 4, "代码报错 num");//因为sizeof(num) == 4,所以为真,编译成功
10 
11     static_assert(sizeof(sh) > 2, "error sh");//因为sizeof(sh) == 2,所以为假,编译失败
12     //error sh
13 
14     system("pause");
15 }

 

2 std::nothrow

 

处理内存耗尽

 

#include <iostream>

struct big
{
	double db[20000];
};

void main()
{
	big *p;
	
	p = new(std::nothrow) big[100000];//处理异常

	//p = new big[100000];

	if (!p)
	{
		std::cout << "error" << std::endl;
	}

	system("pause");
}

 

3 std::ref()

实现引用包装器

 

//模板函数引用无效,因此需要引用包装器

std::ref(),函数模板直接引用

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 template <class T>
 5 void com(T arg)//模板函数引用无效,因此需要引用包装器
 6 {
 7     arg++;
 8     std::cout << "void com(T arg) " << &arg << std::endl;//地址不一样
 9 }
10 
11 void main()
12 {
13     int count(10);
14     int & rcount(count);//引用
15 
16     std::cout << "原来的值" << count << std::endl;//10
17 
18     com(&count);//参数是地址
19 
20     std::cout << "参数是地址" << count << std::endl;//仍然10
21 
22     com(rcount);//参数是引用
23 
24     std::cout << "参数是引用" << count << std::endl;//仍然10
25 
26     std::cout << "main " << &count << std::endl;//地址不一样
27 
28     //std::ref(变量名),函数模板直接引用
29     com(std::ref(count));
30 
31     std::cout << "引用包装器" << count << std::endl;//变成11
32 
33     system("pause");
34 }

 

4 std::string

字符串

 

//R"(可以把括号内部的转义字符去掉)"

 

 1 #include <iostream>
 2 
 3 void main()
 4 {
 5     //R"(可以把括号内部的转义字符去掉)"
 6     std::string path = R"("D:\Program Files\Tencent\QQIntl\Bin\QQ.exe")";
 7 
 8     system(path.c_str());//执行
 9 
10     system("pause");
11 }

 

转载于:https://www.cnblogs.com/denggelin/p/5656381.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值