PPC的C/C++和人工智能学习笔记
每一篇学习笔记,都只是为了更好地掌握和理解

C++语言基础(14)_c++11部分标准

今天学习C++11标准的部分内容。

 

C++11标准,原名C++0x。它是目前C++编程语言的最新正式标准(ISO/IEC 14882:2011)。

它将取代第二版标准ISO/IEC 14882:2003(第一版ISO/IEC 14882:1998公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小)。

C++11包含了核心语言的新机能,并且拓展C++标准程序库,并且加入了大部分的C++ Technical Report 1程序库(数学上的特殊函数除外)。C++ 标准委员会计划在2010年8月之前完成对最终委员会草案的投票,以及于2011年3月3召开的标准会议完成国际标准的最终草案。最终于2011年8月12日公布,并于2011年9月出版。2012年2月28日的国际标准草案(N3376)是最接近于现行标准的草案(编辑上的修正)。此次标准为13年第一次重大修正。

 

1、初始化列表

int i = 0; //以前的写法

int j(1);  //以前的写法

int m = { 3 }; //新的写法

int n{ 2 };    //新的写法

//新的写法要注意一个东西,不能出现精度丢失的问题

double d = 3.14;

//int m1{ d }; //错误,这样写不行

//int m1={ 3.14 }; //错误,这样写不行

int m2{ (int)d }; //这样写可以

 

2、空指针的写法

int *p = NULL; //以前的写法

int *p1 = nullptr; //新的写法

 

3、自动类型auto

auto a = 1;//根据值去匹配类型

//auto a1 = 2, a2 = 3.12;//错误:当声明多个变量时,类型必须全部相同

auto p = new char[4];//p根据值匹配为char*

注意:

//auto在函数返回值使用,注意在后面加上尾置类型,原因是函数返回值比函数的参数先确定类型

auto Myadd(int a, int b)->int

{

return a + b;

}

 

4、decltype将变量的类型声明认为是表达式指定的类型

int i = 1;

decltype(i) j;//这句的意思,可以理解为定义了一个j变量,并认为j变量是int类型

decltype((i)) q = j;//再加一个圆括号,代表为引用的声明,所以要初始化赋值

//上面这行就是 int &q=j;

 

5、新的for规则,和迭代的机制一样

std::string srcString = “abcd”;

for (auto c : srcString)//c为什么定义成自动类型,是因为c会是一个迭代器

cout << c << endl;

 

int my_array[5] = { 1, 2, 3, 4, 5 };

for (int &x : my_array)

{

x *= 2; //把数组的值翻倍

}

 

6、类型重定义

typedef int HELLO;//旧方法

using HAHA = int; //新方法

typedef int(*pFun)(int, int);

using PFUN = int(*)(int, int);

 

7、default在类中的应用

class CA

{

public:

CA(int a) { this->a = a; }

//CA() {}//旧方法

//新方法,编译器合成一个默认的什么都不干的构造函数;在类内定义,内联函数

//CA() = default;

CA();

int a;

};

CA::CA() = default;//在类外定义,普通函数

 

8、类中直接初始化成员数据

class CA

{

public:

int a = 0; //这里直接初始化

};

 

9、构造函数委托

//构造函数委托,有多个构造函数,其中的一个调用另一个构造,这叫委托

//委托发生构造函数成员初始化列表当中

class MM

{

public:

int mk;

int mk1;

MM(int k) { mk = k; }

MM() : MM(10) { mk1 = 20; } //这里就是委托

};

 

10、final禁止重写

class CA

{

public:

//可以只给基类的成员数据赋值

virtual void run() final //该函数在派生类中不允许重写(必须是虚函数)

{

cout << “abc” << endl;

}

virtual void run1() {}

};

 

 

(2017-04-03 www.vsppc.com)

学习笔记未经允许不得转载:PPC的C/C++和人工智能学习笔记 » C++语言基础(14)_c++11部分标准

分享到:更多 ()

评论 72

评论前必须登录!