INT2202 Lp trình nâng cao HKII, 2011-2012
1
Bài thực hành 13
Mục tiêu
Ôn tập: con trỏ và cấp phát động
Bài tập
Bắt buộc giải phóng tất cả c biến được cấp phát động khi không còn cn đến chúng.
iy u cầu cài đặt lớp StringClass biểu diễn xâu ký tự, liên hệ mật thiết với các kiến thức trong
phần 10.3 giáo trình. Bạn không được sử dụng các hàm xử lý xâu kí tự có sẵn trong <cstring> hay
<string>.
Để biểu diễn xâu kí t bằng mảng char cấp phát động, lớp có biến thành viên private tên là data kiểu
char *. Ngoài ra còn có biến thành viên length kiểu int để đếm số lượng kí tự trong xâu, biến thành
viên capacity kiểu int lưu kích thước của mảng data. Bên dưới là hình vẽ minh họa mảng data, length
và capacity khi lưu xâu “HELLO”.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
‘H’
‘E’
‘L’
‘L’
‘O’
length
capacity
Tệp StringClass.h chứa định nghĩa của lớp StringClass được cho sẵn.
y cài đặt các hàm thành viên và đặt vào StringClass.cpp và viết hàm main (tệp main.cpp) chy th
các hàm thành viên này thông qua các đối tượng StringClass.
#define STRING_CLASS_H
#include <iostream>
using namespace std;
class StringClass{
public:
StringClass();
StringClass(char * cstr); // Tao bien StringClass moi co du lieu cua xau cstr
StringClass(const StringClass& sc);
~StringClass();
int getLength()const; // Tra ve so ki tu trong xau
int getCapacity()const; // Tra ve dung luong cap phat cho mang data
void setCapacity(int newCapacity); // Thay doi dung luong toi da cua xau
bool isEmpty()const; // Kiem tra xem xau co rong hay khong
void clear(); // Xoa noi dung cua xau
char& operator[](int i); // Tra ve tham chieu den ki tu co chi so i
StringClass& operator=(const StringClass& sc); // Nap chong phep gan
StringClass& operator+=(const StringClass& sc); // Nap chong phep +=
const StringClass operator+(const StringClass& sc); // Nap chong phep +
friend istream& operator>>(istream& in, StringClass& sc);
INT2202 Lp trình nâng cao HKII, 2011-2012
2
private:
char * data;
int length;
int capacity;
};
#endif