01/10/2018, 11:04

Hỏi mảng cấp phát động trong Class

int *cap_phat_dong=new int[n]; //cấp mảng phát động cho mảng có kiểu int.
sinhvien *cap_phat_dong=new sinhvien(mssv,name); //sinhvien:class
-Trong bài giảng danh sách sinh viên của anh Đạt , anh Đạt truyền vào mảng không phải truyền vào các giá trị kiểu int ,char hay float,… mà truyền vào cùng lúc mssv(int) và name(string) , như ví dụ trên.Là mảng phát động ,vậy nó là mảng mà có thể vừa truyền vào int và string sao ạ ,em mới biết về mảng phát động . Mong mọi người giúp đỡ

rogp10 viết 13:19 ngày 01/10/2018

sinhvien *cap_phat_dong=new sinhvien(mssv,name);

Lệnh đó bản chất là lấy 1 slot rồi kích hoạt constructor, mà viết constructor thì mấy tham số cũng được.

Số slot nằm giữa 2 dấu [].

Tao Không Ngu. viết 13:05 ngày 01/10/2018

Hi huydo.
Code ? Uplên mới xem được.

chichi viết 13:15 ngày 01/10/2018

thực ra bạn đang hiểu sai int *cap_phat_dong=new int[n] là cấp phát mảng động kiểu int, nhưng sinhvien *cap_phat_dong=new sinhvien(mssv,name) là cấp phát 1 đối tượng kiểu sinhvien qua constructor 2 tham số (mã sv, tên) chứ không phải cấp phát mảng

Trần Hoàn viết 13:21 ngày 01/10/2018
int* cap_phat_dong = new int[n];

Khai báo một biến kiểu int*, đặt tên biến là cap_phat_dong. Kiểu mảng (int[]) là một tập con của kiểu int* nên có thể khởi tạo con trỏ dưới dạng mảng.

sinhvien* cap_phat_dong = new sinhvien(mssv, name);

Khai báo một biến kiểu sinhvien*, đặt tên biến là cap_phat_dong. Kiểu sinhvien là một tập con của kiểu sinhvien* nên có thể khởi tạo con trỏ dưới dạng sinhvien, hàm tạo sinhvien(int, string) đã được định nghĩa trước đó.

Thực ra thì những gì mình đưa ra ở trên không hoàn toàn chính xác, nhưng đại khái bạn có thể hiểu là sinhvien và mảng không có quan hệ gì với nhau, và tại sao lại có thể khởi tạo chúng nó như vậy.

Bài liên quan
0