30/09/2018, 17:21

[Hỏi] 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;
}
... viết 19:24 ngày 30/09/2018

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

vũ xuân quân viết 19:26 ngày 30/09/2018

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.

Bài liên quan
0