隐式调用的含义是什么?

时间:2018-10-18 13:38:58

标签: c++ constructor

在c ++中,我读到构造函数会在需要内存分配时对操作符new进行隐式调用并删除它们。语句的含义是什么?

2 个答案:

答案 0 :(得分:3)

这本书所谈论的是有些类隐藏了它们正在为您进行动态分配。让我们看一个简单的字符串类。在复制为c字符串的构造函数中,它将“隐式”调用new来为字符串分配存储空间。您不必手动调用new并为字符串类提供正确大小的指针,而构造函数会为您执行此操作,因此作者称其为“隐式调用”

这就是他想要达到的目标。构造函数和析构函数可以自己调用newdelete来处理内存分配,从而使您不必进行分配。这就是大多数标准容器的工作方式。他们分配所需的存储空间,您无需担心。这是RAII (Resource acquisition is initialization)的核心部分,是正确C ++设计的非常有用和重要的部分。

答案 1 :(得分:0)

基本上,隐式调用就像编译器的幕后工作一样。 因此C ++具有许多可用于类的预制成员函数。

因此,当您的构造函数例如调用“ new”或“ delete”时,这些函数已经知道该怎么做以及何时调用它们自己。您不必预先定义它们或手动调用它们,它们存在于您的类构造函数和析构函数的服务中,并且知道何时调用它们自己。