c – 删除构造函数后的初始化
发布时间:2020-12-16 10:00:57 所属栏目:百科 来源:网络整理
导读:我的问题是:在删除构造函数之后是否有任何方法来初始化类?例如 class A{ public: A() = delete; int a = 42; int fun(){ a += 1; return a; }}; 现在不应该使用这个类.例如,你不能: A* instance = (A*)malloc(sizeof(A));instance-fun(); //segfault 和 A
我的问题是:在删除构造函数之后是否有任何方法来初始化类?例如
class A{ public: A() = delete; int a = 42; int fun(){ a += 1; return a; } }; 现在不应该使用这个类.例如,你不能: A* instance = (A*)malloc(sizeof(A)); instance->fun(); //segfault 和 A instance; //compile error undefined function 假设由于一些奇怪的原因你实际上想要使用删除了构造函数的类,有没有办法可以做到?这没有像重写构造函数那样做. 我知道这是一个奇怪的问题,但我有兴趣知道某人是否有(也许是模糊的)这样做的方式.谢谢! 解决方法
如果类是聚合,则可以使用聚合初始化创建一个聚合初始化,而不会调用A的构造函数.例如:
A a = { 1 }; 在C 11中,由于存在= 42,所以你的班级不是聚合的.所以在C 11中你的班级是无法使用的. 但是在C 14中这已经改变了,并且= 42并不能阻止该类成为聚合,因此它可以再次使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |