c11标准

在编译器vs13及其以上可以使用 编译器对语言的一种优化

1.变量初始化 int a=0,a(10),a{10};定义a的值的三种方式

2.nullptr 相当于c的null 有类型 更加的安全

3.auto 自适应类型 用于返回类型比较复杂的返回值

4.decltype 用一个变量定义同类型的变量/该类型的引用

5.关于for的一个用法for(i:arr) 变量数组里所有的数据

6.类的别名 C语言用 typedef int INT typedef 类型名 别名来定义 c++中用using INT=int来使用

7.类中成员 一般是构造中赋初值 C11可以直接在类中赋初值

8.A()=default;自动生成默认构造

9.委托  在构造中调用自己的其他构造

10.final 放在虚函数后面防止重写终极函数不能重写 放在类后面终极类不能派生其他子类

 1 #include<iostream>
 2 #include<vector>//向量
 3 using namespace std;
 4 class A
 5 {
 6     int data = 0;
 7     int y;
 8 public:
 9     //A(){ data = 0; }//构造函数
10     A() = default;//默认构造  如果写了其他构造 默认不在自动生成一个构造函数
11     A(int data) :data(data){}//有参构造 初始化新参列表
12     A(int x, int y) :A(x){ this->y = y; }//在里面调用其他构造帮忙做事情 --->委托
13 };
14 
15 class B
16 {
17 public:
18     virtual void fun(){
19         cout << "父类函数" << endl;
20     }
21     virtual void fun2()final{//加上final为终极类不能进行派生
22         cout << "父类函数2" << endl;
23     }
24 };
25 class C :public B
26 {
27     void fun(){
28     cout << "子类函数" << endl;
29 }
30 //    void fun2(){
31 //        cout << "类函数2" << endl;
32 //    }子类函数fun2不能继承父类的函数 因为父类函数是终极函数 不能进行派生
33 };
34 class D final//不能派生任何子类
35 {
36 
37 };
38 class E//:public 不能派生D
39 {
40 
41 };
42 int main()
43 {
44     A aa;
45     int a = 0;//c语言的赋值方式
46     int b(10);//c++的赋值方式 常用于初始化形参列表
47     int c{10};//c11标准提出
48     int d[10]{1, 2, 3, 4, 5, 6, 7, 8, 9};//数组初始化
49     NULL;//c语言指针空 宏定义 
50     nullptr;//c++的指针空 void*类型
51 
52     auto x = 3.14;//auto类型 根据后面的值返回定义的类型 必须初始化否则无意义
53     vector<int>arr = { 1, 2, 3, 4, 5, 6, 7, 8 };
54     //初始化数组
55     vector<int>::iterator it = arr.begin();//指向第一个元素 iterator用于修改元素的值
56     auto p = arr.begin();
57     cout << *it << endl << *p << endl;
58     int y;//int类型的变量
59     decltype(y) z;//定义一个变量z
60     //decltype是返回y的类型 z的类型和y的类型一样 int z
61     //z是什么类型 根据前面的y确定的 目的:定义同类型的变量
62     decltype((y)) py = y;//定义一个引用类型 相当于 int& y
63     for (auto i : arr)//循环打印arr的所有元素 i是新定义的变量 arr是数组
64     {
65         cout << i;
66     }
67     using INT = int;//给int取别名 INT
68     using ARR = int[4];
69     ARR ab;//相当于int ab[4];
70     cin.get();
71     return 0;
72 }

猜你喜欢

转载自www.cnblogs.com/liugangjiayou/p/11397546.html
C11