我们可以说构造函数创建对象吗?

时间:2015-05-09 09:49:42

标签: c++ class constructor

有人告诉我构造函数会创建对象。但是在互联网上我搜索了在创建对象时执行的构造函数。你能解释一下吗?我是C ++的新手

3 个答案:

答案 0 :(得分:7)

  

在C ++中,构造函数是一种特殊的类成员函数   在实例化该类的对象时执行。

     

构造函数通常用于初始化的成员变量   类适当的默认值,或允许用户轻松   将这些成员变量初始化为所需的任何值。

因此,当你调用构造函数时,你有一个已经实例化的对象,所以构造函数不创建对象,也不创建对象变量,它只是用来初始化该对象内的变量(或者做一些在使用对象之前你想要的任务。)

编辑:另外:

  

构造函数按此顺序执行其工作:

     
      
  1. 按顺序调用基类和成员构造函数   声明。
  2.   
  3. 如果类是从虚拟基类派生的,那么   初始化对象的虚拟基指针。
  4.   
  5. 如果班级有或   继承虚函数,它初始化对象的虚拟   函数指针。虚函数指针指向类   虚函数表,用于正确绑定虚函数   调用代码。
  6.   
  7. 它在其函数体中执行任何代码。
  8.   

检查这些链接以获取更多信息:

http://www.learncpp.com/cpp-tutorial/85-constructors/

https://msdn.microsoft.com/en-us/library/s16xw1a8.aspx

https://isocpp.org/wiki/faq/ctors

答案 1 :(得分:2)

class a{int a = 0;int b = 0;} a obj = new a(); 在上面的代码中 你的obj是为obj创建的内存,是在堆栈中分配然后是构造函数 代码是执行

答案 2 :(得分:-1)

英语是一种不精确的语言,当它们不重要时,通过对细微的细节进行掩饰可以很好地理解直觉。

如果您的任务是"创建T"类型的(默认初始化)对象,那么您将使用T()执行此操作。或其他变化取决于需要(例如new T())。

说调用构造函数创建一个(临时)对象是完全正确的。魔术发生在您调用构造函数的站点和进入构造函数的位置之间的事实是一个通常不值得关注的细节。

除此之外:我相信"创造一个对象"也是由C ++标准定义的技术术语,它可能会或可能不会与"创建"的直观概念产生分歧。我没有参考方法来判断一个对象是否被认为是"创建的"在您输入构造函数之前或在构造函数成功退出之后,通过此技术定义。