我是靠谱客的博主 聪明大米,最近开发中收集的这篇文章主要介绍常见的几个C++11特有的基础语法0. 引入1. C++11的编译2. auto3. decltype4. in-class initialization5. Unicode6. Fixed width integer types7. Defaulted Functions8. int变量的初始化总结参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

0. 引入

C++的版本号比较有意思,C++98是1998年发布的,C++11是2011年发布的,C++14和C++17分别是2014年和2017年发布的。

C++11是作为取代C++98的版本,这两个版本都是非常经典的版本。

在工作中,遇到了一些C++11特有的基础语法,下面记录一部分。

注意,本篇只讲解笔者看代码常见到的最基础的C++11语法,并不涉及labmda、thread、smart pointer等高级语法。

1. C++11的编译

在linux中,可以使用如下命令来编译C++程序:

  1. 使用C++11标准来编译
g++ -std=c++11 main.cpp -o main
  1. 使用C++98标准来编译
g++ -std=c++98 main.cpp -o main
  1. 使用C++20标准来编译
g++ -std=c++2a main.cpp -o main

2. auto

使用auto来定义变量,简化编程。

auto a=0; //x has type int because 0 is int
auto b='a'; //char
auto c=0.5; //double
auto d=14400000000000LL;//long long
auto e=mapString.begin();//std::map<std::string, std::string>::const_iterator e = mapString.begin();

3. decltype

decltype能返回“一个变量的类型”,如下示例:

auto x = 1.5;
typedef decltype(x) MYTYPE;
MYTYPE y = x+3;//define y as double
cout<<y<<endl;//4.5

typedef decltype(x) MYTYPE;就相当于typedef double MYTYPE;

4. in-class initialization

C++11支持在class中对成员变量直接进行初始化。

class C
{

 int a=7; //C++11 only

public:

 C();

};

5. Unicode

C++11支持如下两种类型来定义Unicode字符。

char16_t c = u'于'; //c++11
char32_t c = U'于'; //c++11

6. Fixed width integer types

C++11支持固定长度的整数类型,如下所示:

int16_t x = 666;

不需要导入任何头文件就能编译通过。

7. Defaulted Functions

C++11支持用=default的方式,让编译器生成默认实现的函数。

struct A
{

 A()=default; //C++11

 virtual ~A()=default; //C++11

};

8. int变量的初始化

示例如下:

//allocate an int, default initializer (do nothing)
int * p1 = new int; 
//allocate an int, initialized to 0
int * p2 = new int();
//allocate an int, initialized to 5
int * p3 = new int(5); 
//allocate an int, initialized to 0
int * p4 = new int{};//C++11 
//allocate an int, initialized to 5
int * p5 = new int {5};//C++11

总结

记录了笔者看代码常见到的最基础的C++11语法,从这些语法中也能一瞥C++11的特性。

参考

  1. https://smartbear.com/blog/the-biggest-changes-in-c11-and-why-you-should-care/
  2. https://github.com/ShiqiYu/CPP

最后

以上就是聪明大米为你收集整理的常见的几个C++11特有的基础语法0. 引入1. C++11的编译2. auto3. decltype4. in-class initialization5. Unicode6. Fixed width integer types7. Defaulted Functions8. int变量的初始化总结参考的全部内容,希望文章能够帮你解决常见的几个C++11特有的基础语法0. 引入1. C++11的编译2. auto3. decltype4. in-class initialization5. Unicode6. Fixed width integer types7. Defaulted Functions8. int变量的初始化总结参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部