zoukankan      html  css  js  c++  java
  • #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 FilesTencentQQIntlBinQQ.exe")";
     7 
     8     system(path.c_str());//执行
     9 
    10     system("pause");
    11 }
  • 相关阅读:
    那段岁月
    ExtJS +Asp.NET实践(1)GridPanel与服务器端数据交互
    Jqplot+asp.net画图实现
    VC++ 内存机理的个人理解(一)——地址和指针的关系
    恢复PL/SQL Developer中删除确认对话框
    VC++ 内存机理的个人理解(二)——堆和栈
    用VS 2008开发WCF(一)——最快速的WCF入门
    用VS 2008开发WCF(二)——构建最初的服务器
    联想G460笔记本触摸板驱动 For Windows 7 x64
    .NET async await 关键字最简单例子
  • 原文地址:https://www.cnblogs.com/denggelin/p/5656381.html
Copyright © 2011-2022 走看看