Giải thích hàm tạo sao chép trong C++

Em có đoạn code như sau:

class Array
	{
	private:
		int	m_size;
		int	*m_data;
	public:
		Array(int size);
		Array(const Array &a);
		~Array();
	};
Array::Array(const Array &a)
{
	m_size = a.m_size;
	m_data = new int[m_size];
	for (int i = 0; i < m_size; i++)
	m_data[ i ] = a.m_data[ i ];
}

void main()
{
	Array   a1(5);
	Array   a2(a1);
	…
}

Cho em hỏi là ở dòng lệnh Array a1(5) thì ghi gọi hàm sao chép, các giá trị được sao chép (size,data) sẽ như thế nào vậy ạ?

Hàm Array(int size) chưa được định nghĩa nên không thể biết được bạn.

Array a1(5); gọi đến hàm thiết lập thường nha bạn; Còn Array a2(a1); mới gọi đến hàm thiết lập sao chép.

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