<< std::to_string(1000) << ", " << std::to_string(3.1352345) << std::endl;}{typedef void(*FunctionType)(double);// 老式语法using FunctionType = void(*)(double);// 新式语法}{// nullptr and NULLint a = NULL;// int a = nullptr; // 编译错误void *p = nullptr;class MyNullPtr{public:void func(int a){printf("func(int) is called.n");}void func(const char* a){printf("func(const char*) is called.n");}};MyNullPtr ptr;ptr.func(0);ptr.func(NULL);ptr.func(nullptr);}{// constexpr,常量表达式int len = 10;// char buffer[len]; // 编译报错const int b = 10 + 5*2;const int a = 10 + 5*2 + b;constexpr int len2 = 10 + 50*2 + a;char buffer2[a]; // 合法}{// 左值引用和右值引用(&&)std::string str1 = "string,"; // lv1 是一个左值// std::string&& str2 = str1;// 非法, 右值引用不能引用左值std::string&& str3 = std::move(str1); // 合法, std::move可以将左值转移为右值std::string&& str4 = str1 + str3; // 合法, 右值引用延长临时对象生命周期str4 += "Test"; // 合法, 非常量引用能够修改临时变量}{int i = 0;std::string str1 = "string,"; // lv1 是一个左值const std::type_info& info1 = typeid(i);printf("typeinfo:%s, %sn", info1.name(), info1.raw_name());const std::type_info& info2 = typeid(&str1);printf("typeinfo:%s, %sn", info2.name(), info2.raw_name());}}int main(int argc, char *argv[]){setlocale(LC_ALL, "zh_CN.UTF-8");// auto类型推导cpp11_auto();// 区间迭代cpp11_loops();// 强类型枚举cpp11_enum();// Lambda表达式cpp11_lambda();// 互斥量和原子变量cpp11_mutex_atomic();// 条件变量cpp11_condition();// thread,线程cpp11_thread();// 异步任务处理cpp11_future();// 正则表达式cpp11_regex();// 字符串相关cpp11_wstring_utf8();// 函数调用cpp11_functional();// 移动构造cpp11_move();// 共享指针cpp11_shared_ptr();// class新的特性cpp11_class();// string_view(C++17)cpp17_string_view();// 其他一些实用方法cpp11_others();return 0;}
推荐阅读
- 如何利用Java代码操作索引库?
- 对我来说数据库图形化管理工具用这个足够了
- 如何通过Elasticsearch创建索引库?
- 解读标准普洱茶的饮法,白话普洱茶的加工
- 开源JavaScript实用日期处理库——date-fns
- MySQL5.7数据库安装与远程连接
- 用开源工具 Pulp 管理你的软件仓库
- 一款免费的数据库工具,比Navicat还要好用,功能还很强大
- python语言-数据库查询数组转Dataframe格式
- 这些著名数据库之间的“关系”,你知道吗?