30/09/2018, 22:12

Về một phần của class trong C++

Mình có đoạn chương trình mắc lỗi sau nhờ bạn nào có hiểu biết về nó thì giải thích giúp mình:

class Students {
   private: char name[15];
               int age;
               Students *arr;//khai bao mang class Students
   public:  
             Students() {
                arr = new Students[3];//cap phat vung nho cho mang nay.-->ERROR!--->Why? (Bạn nào nhiệt tình thì giúp mình giải thích luôn cơ chế cấp phát này nhé. Thanks guys)
                age = 0;
                strcpy(name , "");               
             }
}
Quân viết 00:25 ngày 01/10/2018

Failed bởi vì khi bạn khai báo arr như thế, thì chương trình sẽ tự động gọi tạo các đối tượng Students cho arr luôn ngay khi bạn New 1 Students trong chương trình chính, tức sẽ tự gọi lại 3 lần constructor cho khởi tạo arr, mà mỗi đôi tượng Students con lại tiếp tục tạo ra Students con cho arr của chính nó nữa, bạn thử tượng xem số lượng đối tượng được tạo ra sẽ khủng khiếp đến như thế nào, siêu máy tính chắc cũng không thể chịu nổi

hacked viết 00:18 ngày 01/10/2018

arr = new Students[3]

gọi 3 hàm tạo tạo 3 students()
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác
Cứ mỗi hàm tạo đựoc gọi lại gọi thêm 3 hàm tạo tạo ra 3 student khác

Mai Hữu viết 00:18 ngày 01/10/2018

cái ct này cấp phát vô hạn cái class students lun. cái mt nào chịu nổi nhể

Module Đk viết 00:25 ngày 01/10/2018

Ừ nhỉ.
Ha ha ha thế mà nghĩ mãi, đúng là một con số bất bại constructor. Thank guys!

Bài liên quan
0