C++ 学习笔记(一些新特性总结 2)
来源:互联网 发布:国防大学 知乎 编辑:程序博客网 时间:2024/04/29 17:47
类成员变量初始化
C++ 11 中引入了一种简单的成员变量初始化方法,可以像普通变量一样初始化成员变量。
class Test{public: int a = 1; int b = 2, c = 3;};
类的特殊成员函数
包括构造函数、析构函数、拷贝构造函数、赋值操作。当我们没有具体给出这些特殊成员函数的实现时。C++ 编译器会替我们实现一个默认的版本。有时,这并不是我们需要 的。C++ 11 提供了一种机制,可以控制这些默认的函数是否生成。
class A{public: // Explicitly include default constructor A() = default; A(int i); // Disable copy constructor A(const A&) = delete; // Disable copy assignment operator A& operator=(const A&) = delete;};
下面来具体解释一下。
A() = default;
告诉编译器替我们生成默认构造函数 A()。
A(const A&) = delete;A& operator=(const A&) = delete;
则禁止编译器生成这两个函数。下面的例子禁止了无参数的构造函数。
class B{public: B() = delete; B(int i): m_b(i) {}; int m_b;};int main() { B b; // 这里会报错,我们阻止了编译器替我们生成默认构造函数 B c(10); // OK}
变量的初始化
C++ 11 中引入了一种统一的初始化语法,或者说扩展了原来只能初始化数组的 “{}”。这种语法可以初始化变量、数组、类对象。下面是个例子:
#include <string>#include <vector>using namespace std;int i { 1 };string s {"Hello"};int a[] { 1, 2 };int *p= new int [2] { 1, 2 };vector<string> box { "one", "two" };// Call parameterless constructorMyClass b {};// Call copy constructorMyClass c { b };
类成员变量的初始化也可以这样写:
class Test{public: int a {1}; int b {2}, c = 3;};
delete 多个变量
这个其实不是 C++ 的新特性,应该在很早的版本中就支持了。但是我一直以为一个 delete 语句只能删除一个变量。下面是个例子。
int * a = new int;double * b = new double;int * c = new int[2];double * d = new double [2] ;delete a, b;delete[] c, d;
派生类使用基类构造函数的新方法
C++ 11 中引入了一种新的语法:
class D2 : public B2{public: using B2::B2; // inherit all constructors int y{0};};
override 关键字
这个关键字我以前写过一篇博客。这里就不重复了。
http://http://blog.csdn.net/liyuanbhu/article/details/43816371
final 关键字修饰虚函数
一旦一个虚函数被声明为final,派生类不能再重载它。
class Base{ virtual void foo() final {}}class Derived{ void foo() {} // error: Base::foo marked as final}
1 0
- C++ 学习笔记(一些新特性总结 2)
- C++ 学习笔记(一些新特性总结 1)
- C++ 学习笔记(一些新特性总结3)
- php学习笔记(四十一)smarty3的一些新特性
- Oracle Database 12c一些新特性总结
- Framework3.0学习笔记(二): 新特性(2)
- js新特性(学习笔记)
- objective-c学习笔记第八章《objective-c 一些特性》
- Android 新特性学习总结
- vs新特性学习总结
- 学习css3新特性总结
- Java8新特性学习总结
- Java8 新特性学习总结
- 新学习CSS特性总结
- jdk7新特性学习笔记
- JAVA8新特性学习笔记
- C++新特性学习笔记
- PHP7的一些新特性总结
- iOS开发之宏的深度学习
- ubuntu修改grub,删除多余启动项
- 【百金轻】:坚持到底方能收获希望
- 关于静态变量
- Android下拉上滑显示与隐藏Toolbar另一种实现
- C++ 学习笔记(一些新特性总结 2)
- Codeforces 605B Lazy Student
- tabBar设置
- 微信jssdk的示例
- K-Means算法
- HDU1013 Digital Roots 模拟&数论(我不会数论)
- Multipliers
- 对《Netty权威指南》中的Http+xml协议栈开发的个人再整理
- maven整合Spring3+Hibernate4+JPA的springMVC框架