C++11--编译器生成的函数

using namespace std;
class Dog {}; /* C++ 03
* 1 默认构造函数(只有当用户没有声明任何构造函数)
* 2 拷贝构造(只有当用户没有声明5,6),扩展到C++11之后(只有当用户没有声明3,4,5,6)
* 3 拷贝赋值(只有当用户没有声明5,6),扩展到C++11之后(只有当用户没有声明2,4,5,6)
* 4 析构函数 * C++ 11
* 5 移动构造(只有当用户没有声明2,3,4,6)
* 6 移动赋值(只有当用户没有声明2,3,4,5) // 看一些例子
class Cat { //编译器产生3,4 (C++11中,3弃用)
Cat(const Cat& ) {} //拷贝构造
}; class Duck { //编译器产生4
Duck(Duck&&) {} //移动构造
}; class Frog { //编译器产生4
Frog(Frog&&, int = 0) {} //移动构造
Frog(int = 0) {} //默认构造
Frog(const Frog&, int = 0) {} //拷贝构造
}; class Fish { //编译器产生1,2,3(C++11中,2,3弃用)
~Fish()
}; class Cow { //编译器产生1,2,4(C++11中,2弃用,如果要用需要显式地叫回)
Cow& operator=(const Cow&) {} = delete; //拷贝赋值禁用,虽然禁用仍然认为是用户声明了
Cow(const Cow&) {} = default; //显式地叫回编译器定义的拷贝构造
};
上一篇:box-sizing (摘录)


下一篇:C#基础--------------------C#正则表达式