Lập Trình C++ - Mảng đối Tượng

Mảng đối tượng trong C++

Mảng các đối tượng cũng có thể được khai báo và sử dụng như mảng của các biến có kiểu thông thường. Khai báo mảng tĩnh các đối tượng Mảng các đối tượng được khai báo theo cú pháp:

<Tên lớp> <Tên biến mảng>[<Số lượng đối tượng>]; 

Ví dụ:

Car cars[10]; 

Là khai báo một mảng có 10 đối tượng có cùng kiểu lớp Car. Lưu ý:

  • Có thể khai báo mảng tĩnh các đối tượng mà chưa cần khai báo độ dài mảng, cách này thường dùng khi chưa biết chính xác độ dài mảng: Car cars[];
  • Muốn khai báo được mảng tĩnh các đối tượng, lớp tương ứng phải có hàm khởi tạo không có tham số. Vì khi khai báo mảng, tương đương với khai báo một dãy các đối tượng với hàm khởi tạo không có tham số.

Khai báo mảng động với con trỏ Một mảng các đối tượng cũng có thể được khai báo và cấp phát động thông qua con trỏ đối tượng như sau:

<Tên lớp> *<Tên biến mảng động> = new <Tên lớp>[<Độ dài mảng>]; 

Ví dụ:

Car *cars = new Car[10]; 

Sau khi được sử dụng, mảng động các đối tượng cũng cần phải giải phóng bộ nhớ:

delete [] <Tên biến mảng động>; 

Ví dụ:

Car *cars = new Car[10];// Khai báo và cấp phát động  …                 // Sử dụng biến mảng động  delete [] cars;      // Giải phóng bộ nhớ của mảng động 

Sử dụng mảng đối tượng Khi truy nhập vào các thành phần của một đối tượng có chỉ số xác định trong mảng đã khai báo, ta có thể sử dụng cú pháp:

<Tên biến mảng>[<Chỉ số đối tượng>].<Tên thành phần>([<Các đối số>]); 

Ví dụ: Car cars[10]; cars[5].show(); sẽ thực hiện phương thức show() của đối tượng có chỉ số thứ 5 (tính từ chỉ số 0) trong mảng cars. Chương trình sau sẽ cài đặt một chương trình, trong đó nhập vào độ dài mảng, sau đó yêu cầu người dùng nhập thông tin về mảng các xe. Cuối cùng, chương trình sẽ tìm kiếm và hiển thị thông tin về chiếc xe có giá đắt nhất trong mảng.

#include<iostream> #include<string> using namespace std; /* Định nghĩa lớp */ class Car { private: int speed; // Tốc độ string mark; // Nhãn hiệu float price; // Giá xe public: void setSpeed(int); // Gán tốc độ cho xe int getSpeed(); // Lấy tốc độ xe void setMark(string); // Gán nhãn cho xe string getMark(); // Lấy nhãn xe void setPrice(float); // Gán giá cho xe float getPrice(); // Lấy giá xe void init(int, string, float);// Khởi tạo thông tin về xe void show(); // Hiển thị thông tin về xe }; /* Khai báo phương thức bên ngoài lớp */ void Car::setSpeed(int speedIn) { // Gán tốc độ cho xe speed = speedIn; } int Car::getSpeed() { // Lấy tốc độ xe return speed; } void Car::setMark(string markIn) { // Gán nhãn cho xe mark = markIn; } string Car::getMark() { // Lấy nhãn xe return mark; } void Car::setPrice(float priceIn) { // Gán giá cho xe price = priceIn; } float Car::getPrice() { // Lấy giá xe return price; } void Car::init(int speedIn, string markIn, float priceIn) { speed = speedIn; mark = markIn; price = priceIn; return; } void Car::show() { // Phương thức hiển thị xe cout << "This is a " << mark << " having a speed of " << speed << "km/h and its price is $" << price << endl; return; } // Hàm main, chuong trình chính int main() { int length; // Chiều dài mảng float maxPrice = 0; // Giá đắt nhất int index = 0; // Chỉ số của xe đắt nhất Car *cars; // Khai báo mảng đối tượng // Nhập số lượng xe, tức là chiều dài mảng cout << "So luong xe: "; cin >> length; // Cấp phát bộ nhớ động cho mảng cars = new Car[length]; // Khởi tạo các đối tượng trong mảng for(int i=0;i<length; i++){ int speed; // (Biến tạm) tốc độ string mark; // (Biến tạm) nhãn hiệu float price; // (Biến tạm) giá xe cout << "Xe thu " << i << ": " <<endl; cout << "Toc do (km/h): "; cin >> speed; cars[i].setSpeed(speed); // Nhập tốc độ cout << "Nhan hieu : "; cin >> mark; cars[i].setMark(mark); // Nhập nhãn xe cout << "Gia ($): "; cin >> price; cars[i].setPrice(price); // Nhập giá xe if (maxPrice < price) { maxPrice = price; index = i; } } // Tìm xe đắt nhất for(int i=0; i<length; i++) if(i == index){ cars[i].show(); // Giới thiệu xe đắt nhất break; } // Giải phóng bộ nhớ của mảng delete [] cars; system("pause"); return 0; }

Kết quả:

So luong xe: 3 Xe thu 0: Toc do (km/h): 100 Nhan hieu : Toyota Gia ($): 2000 Xe thu 1: Toc do (km/h): 110 Nhan hieu : Honda Gia ($): 2200 Xe thu 2: Toc do (km/h): 120 Nhan hieu : Kia Gia ($): 1900 This is a Honda having a speed of 110km/h and its price is $2200

Từ khóa » Khai Báo Trong Oop