创建类对象时的解析问题

时间:2019-05-30 14:35:39

标签: c++ c++11 c++17 class-constructors

如果删除了构造函数,为什么允许写Test object(); Test object{};

  1. 编写Test object();并不意味着在删除构造函数的情况下创建类对象,编译器理解了一个函数,这就是为什么当您尝试编写std::cout << sizeof(object)时会得到错误:ISO C++ forbids applying sizeof to an expression of function type。我可以理解,它不为向后兼容而被弃用,但是可以在C ++ 11中对其进行优化和修复,但不能这样做。

  2. 从C ++ 11开始,您可以使用Test object3{};语法创建对象,即使删除了构造方法,该语法也已经是有效对象,并且在执行std::cout << sizeof(object3)时输出为{{1 }}。在这种情况下,这意味着操作符1是无用的。与在旧版本的delete部分中写入操作符相同。

    当您要创建函数集合并进行封装时,可以使用这种样式的代码。因此,请不要在答案中写例如private等...

Why do you use class instead of namespace

0 个答案:

没有答案