C ++11 新标准
- 1.变量初始化新方式:
int a(10) int a{10} 都表示 a=0
- 2.NULL C语言的空,C++ 中 nullptr 表示空,实际是一个 void 类型 用法同C语言一样,但因为类型的存在更安全*
- 3.auto-自适应类型: 可以根据赋值而赋类型,因此定义变量的时候必须赋值
常用语一些类型比较复杂的变量定义
- 4.decltype-用一个变量来定义同类型的变量或者该类型的引用
int y; decltype(y) z;//定义一个同y类型一个样的z变量
decltype((y)) py=y;//定义一个y类型的引用
- 5.for的新用法
int arr[10] = { 1,3,44324,23 };
for(auto i1 : arr)//将arr全部输出
{
cout << i1;
}
- 6.typedef—using (取别名)
using INT=int;//给int取别名为INT
- 7.类中成员赋初值方式
class A
{
int data=0;//C11 可以直接赋初值
public:
A() { data = 0; }
};
- 8.默认构造-default
class A
{
int data=0;//C11 可以直接赋初值
public:
A(int x) { data = 0; }//C语言变量初始化方式
A() = default;//如果类自定义构造,那么default就可以再次产生默认构造
};
- 9.委托(可以不用)
class A
{
int data=0;//C11 可以直接赋初值
public:
A(int x) { data = 0; }//C语言变量初始化方式
A() = default;//如果类自定义构造,那么default就可以再次产生默认构造
A(int x1, int y) :A(x1) {}//委托,在自己的构造里再次调用其它的构造
};
- 10.final-防止多态的时候重写函数
- 10.1 函数后面加final
class B
{
public:
virtual void fun() { cout << "父类函数" << endl; }
virtual void fun2() final { cout << "父类函数2" << endl; }//final 不允许子类重写fun2
};
class C :public B
{
void fun() { cout