如果默认构造函数不执行任何操作,则目的是什么
If a default constructor performs no action, what is the purpose?
我已经读到默认构造函数不执行任何操作(如果某些条件为真并且这些条件为真,则类 T 的默认构造函数是微不足道的(即不执行任何操作(,我猜这些条件在隐式定义时为真。 http://en.cppreference.com/w/cpp/language/default_constructor
那么,如果它不执行任何操作,为什么编译器甚至会添加它,为什么类需要它?
谢谢!
其目的是在没有合适的构造函数可用的情况下使对象栩栩如生
例:
struct Foo{};
struct Bar
{
Bar() = delete; // no default constructor
};
int main()
{
Foo f;
// Bar b; // does not compile
}
CRT 在实例化类时调用构造函数,因此必须存在一个构造函数才能调用,即使它"什么都不做"。如果由于该原因未提供默认构造函数,编译器将为您生成默认构造函数。否则,将无法实例化对象。施工时发生的事情的规则、步骤和顺序只是语言的一部分。
即使主体为空,仍会在构造时初始化类的数据成员。
此外,请考虑在构造时如果类派生自另一个类会发生什么情况。
有关构造函数主题的深入了解,请参阅 http://isocpp.org/wiki/faq/ctors#overview-ctors。
因为编译器只会在需要调用时才生成默认构造函数。例如,这可以由派生class
或标准库容器提供。 编译器仍然可以自由地优化它,因为它具有显式定义的"无所事事"功能。
相关文章:
- 此代码中的操作流程是什么?C/C++.
- C++中最接近 Lua 表操作的东西是什么?
- 如果默认构造函数不执行任何操作,则目的是什么
- 从C++与 C 灵活阵列成员互操作的正确方法是什么?
- 在C 中操作数据的更好方法是什么
- 三元操作的结果(类型)是什么
- 具有可以引发的移动操作的仅移动类的示例是什么?
- 操作之间的关系中的对象类型是什么?
- 用于将 void 指针强制转换为指向类型的指针的操作的术语是什么
- c++ 的默认分配操作行为是什么?
- 在C++中实现无操作语句的便携式方法是什么?
- 这种无操作 while 循环用于断言宏的原因是什么?
- 在单独的 GUI 类(菜单、工具栏等)之间共享操作的最佳方式是什么
- 这里的具体操作顺序是什么?
- 在c++中编写取消操作背后的概念是什么?
- 在内存中操作std::string的二维动态数组的最有效方法是什么?
- c++ 11标准中的消费操作是什么?
- 使用std::map时必须互斥的所有操作/函数是什么?
- 编译器用来决定移动操作是否安全的标准是什么
- std::vector<void*>::保留 O(1) 时间操作的参数是什么?