1

私はC++プログラミングが初めてで、他の人たちと同じように、コピーコンストラクターの概念が少しおかしいと思います。

コピーコンストラクターは、既存のオブジェクトのコピーである新しいオブジェクトを作成し、それを効率的に行う特別な種類のコンストラクターです。

他のオブジェクトのコピーであるオブジェクトを作成するコードを書きましたが、結果が奇妙であることがわかりました。コードは次のとおりです。

 #include <iostream>

 using namespace std;

 class box
 {
   public:

   double getwidth();
   box(double );
   ~box();
    box(box &);
   private:
      double width;
 };

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

box::box(box & a)
{
  cout<<"\n Copy constructructor got activated ";
}
box::~box()
{
  cout<<"\n I'm inside the desstructor ";

}

double box::getwidth()
{
   return width;
}


int main()
{
  box box1(10);
  box box2(box1);
  cout<<"\n calling getwidth from first object  : " <<box1.getwidth();
  cout<<"\n calling the getwidth from second object   : " <<box2.getwidth(); 
}

以下のコードに従って box2.getwidth() を呼び出すと、ジャンク値が得られました。私の理解では、box2はbox1のコピーであるため、幅が10に初期化されることを期待していました。明確にしてください

4

2 に答える 2