C++中 =default和=delete

default(Defaulted Function)
编译器创建此函数的默认实现
默认函数需要用于特殊的成员函数(默认构造函数,复制构造函数,析构函数等)

delete(expicitly deleted)
禁用成员函数使用
通常是针对隐式函数


class A
{
public:
   A() = default;
   A(const A &a) = delete;
};

int main()
{
   A a1;
   A a2 = a1;

   return 0;
}
$ g++ default.cpp -std=c++11
default.cpp: In function ‘int main()’:
default.cpp:12:11: error: use of deleted function ‘A::A(const A&)’
    A a2 = a1;
           ^
default.cpp:6:4: note: declared here
    A(const A &a) = delete;
    ^
posted @ 2022-09-01 15:13  thomas_blog  阅读(81)  评论(0)    收藏  举报