11.如何禁止构造函数的使用-灵析社区

菜鸟码转

为类的构造函数增加 = delete 修饰符,可以达到虽然声明了构造函数但禁止使用的目的。

C++

#include <iostream>

using namespace std;

class A {
public:
    int var1, var2;
    A(){
        var1 = 10;
        var2 = 20;
    }
    A(int tmp1, int tmp2) = delete;
};

int main()
{
    A ex1;    
    A ex2(12,13); // error: use of deleted function 'A::A(int, int)'
    return 0;
}

如果我们仅仅将构造函数设置为私有,类内部的成员和友元还可以访问,无法完全禁止。而在 C++11 以后,在成员函数声明后加 "= delete"则可以禁止该函数的使用,而需要保留的加 "= default"。

阅读量:2028

点赞量:0

收藏量:0