1

我是 C++ 的初学者,我尝试通过创建一个对象并通过点运算符访问它来访问构造函数方法。在这个过程中我得到了错误。这正常吗?我只是在尝试。如果有办法做同样的事情,请告诉我程序,我已经用谷歌搜索但找不到任何解决方案。下面是代码。

#include <iostream>

using namespace std;

class box
{
  public:
    box(double );
  private:
    double width;
};

 box::box(double w)
{
  cout<<"\n I'm inside the constructor ";
  width=w;
}


box::~box()
{
  cout<<"\n I'm inside the desstructor ";

}


int main()
{
  box box1;
  box1.box(10);
}
4

3 回答 3

5

是的,这很正常,你不能手动调用构造函数。这不是一个函数。在已经构造的对象上调用 c-tor 是没有意义的。

因为构造函数没有名称,所以在名称查找过程中永远找不到它们;然而,使用函数符号 (5.2.3) 的显式类型转换将导致调用构造函数来初始化对象。[ 注意:类类型对象的初始化见 12.6。——尾注]

于 2013-06-13T05:46:38.437 回答
3

首先请注意,您的代码甚至无法编译。我们马上就会讲到。

这一行:

box box1;

尝试创建一个盒子对象。之后 ; box1 是一个成熟的盒子对象。好吧,如果代码可以编译的话。但它不能,因为 box 没有默认构造函数。你不能创建一个没有参数的盒子实例——你必须给它一个双精度。在下一行中,您尝试这样做,但为时已晚 - 构造函数仅在对象创建时调用。

所以你必须这样做:

box box1(10.0);
于 2013-06-13T05:56:14.750 回答
2

构造一个对象然后再次调用它的构造函数并没有什么意义。

线

box box1;

创建一个实例并调用其默认构造函数。

创建后不能再次创建相同的实例。您可能正在寻找的是赋值运算符,而不是构造函数。

于 2013-06-13T05:47:50.907 回答