Thắc mắc về Copy Constructor

Tình hình là em đang học về Copy Constructor, nhưng mà em không hiểu nó làm gì và hoạt động như thế nào, mọi người giải thích giùm em nha.

Đây là code trên http://www.tutorialspoint.com/

class Line
{
   public:
      int getLength( void );
      Line( int len );             // simple constructor
      Line( const Line &obj);  // copy constructor
      ~Line();                     // destructor

   private:
      int *ptr;
};

// Member functions definitions including constructor
Line::Line(int len)
{
    cout << "Normal constructor allocating ptr" << endl;
    // allocate memory for the pointer;
    ptr = new int;
    *ptr = len;
}

Line::Line(const Line &obj)
{
    cout << "Copy constructor allocating ptr." << endl;
    ptr = new int;
   *ptr = *obj.ptr; // copy the value
}

Line::~Line(void)
{
    cout << "Freeing memory!" << endl;
    delete ptr;
}
int Line::getLength( void )
{
    return *ptr;
}

void display(Line obj)
{
   cout << "Length of line : " << obj.getLength() <<endl;
}

// Main function for the program
int main( )
{
   Line line(10);

   display(line);

   return 0;
}

Giả sử có class Student trong đó có chứa copy constructor.
Mình có thể dùng như lày:

Student* student = new Student(anotherStudent);

Hình như là vậy :dizzy_face:

2 Likes

mục đích của hàm copy constructor là sao chép giá trị của một đối tượng đã có để tạo ra một đối tượng mới có giá trị tương ứng.

ví dụ:
như class Line có hàm copy constructor Line::Line(const Line &obj), có đối tượng line là 15 thì khi gọi hàm copy thì sẽ tạo một đối tượng line mới có giá trị là 15.

Trên là ý nghĩa và mục đích của hàm copy constructor.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?