Tải bản đầy đủ (.docx) (4 trang)

Đối tượng hằng, phương thức hằng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (54.34 KB, 4 trang )

Đối tượng hằng, phương thức hằng
+ Cũng giống như các phần tử dữ liệu khác, một đối tượng có thể được khai báo là hằng
bằng cách dùng từ khoá const. Ví dụ:
class DIEM
{
private:
int x, y;
int m;
public:
DIEM()
{
x = y = m = 0;
}
DIEM(int x1, int y1, int m1=15)
{
x= x1; y= y1; m= m1;
}
...
} ;
const DIEM d = DIEM(200,100); // Khai báo đối tượng hằng
+ Khi khai báo cần sử dụng các hàm tạo để khởi gán giá trị cho đối tượng hằng. Giá trị
khởi tạo có thể là các hằng, các biến, các biểu thức và các hàm, ví dụ:
int x0=100, y0=50; m0 =4;
const DIEM d5 = DIEM(x0 + getmaxx()/2, y0 + getmaxy()/2, m0);
+ Các phương thức có thể sử dụng cho các đối tượng hằng là hàm tạo và hàm huỷ. Về lý
thuyết các đối tượng hằng không thể bị thay đổi, mà chỉ được tạo ra hoặc huỷ bỏ đi.
Khi dùng một phương thức cho đối tượng hằng, thỡ CTBD (Chương trỡnh biờn dich) sẽ
cảnh bỏo (warning):
Non-const function called for const object
Tuy nhiên, chương trỡnh EXE vẫn được tạo và khi thực hiện chương trỡnh, thỡ nội dung
cỏc đối tượng hằng vẫn bị thay đổi. Chương trỡnh dưới đây sẽ minh hoạ điều này. Chương


trỡnh đưa vào lớp PS (phân số). Phương thức toán tử ++ vẫn có thể làm thay đổi đối tượng
hằng (mặc dù khi biên dịch có 3 cảnh báo).
//CT4_19.CPP
// doi tuong const
// Lop PS (phan so)
#include <conio.h>
#include <iostream.h>
#include <string.h>
224
#include <math.h>
class PS
{
private:
int t,m;
public:
PS()
{
t = m = 0;
}
PS(int t1, int m1)
{
t = t1; m = m1;
}
PS operator++()
{
t += m ;
return *this ;
}
void in()
{

cout << "\nPS= " << t << "/" << m;
}
void nhap()
{
cout << "\n Nhap tu va mau: " ;
cin >> t >> m;
}
} ;
void main()
{
int t1=-3, m1=5;
const PS p = PS(abs(t1)+2,m1+2); // Khai báo đối tượng hằng
clrscr();
p.in();
++p;
p.in();
getch();
}
226
+ Phương thức const
Để biến một phương thức thành const ta chỉ việc viết thêm từ khoá const vào sau dũng
đầu của phương thức.
Chỳ ý: Nếu phương thức được khai báo bên trong và định nghĩa bên ngoài lớp, thỡ từ
khoỏ const cần được bổ sung cả trong khai báo và định nghĩa phương thức.
Trong thân phương thức const không cho phép làm thay đổi các thuộc tính của lớp. Vị
vậy việc dùng phương thức const cho các đối tượng hằng sẽ đảm bảo giữ nguyên nội dung
của các đối tượng hằng.
Đương nhiên các phương thức const vẫn dùng được cho các đối tượng khác.
Ví dụ sau về lớp PS (phân số) minh hoạ việc dùng phương thức const.
// Đối tượng const

// Phương thức const
// Lop PS (phan so)
#include <conio.h>
#include <iostream.h>
#include <string.h>
#include <math.h>
class PS
{
private:
int t,m;
public:
PS()
{
t = m = 0;
}
PS(int t1, int m1)
{
t = t1; m = m1;
}
PS operator++()
{
t += m ;
return *this ;
}
void in() const ;
void nhap()
{
cout << "\n Nhap tu va mau: " ;
cin >> t >> m;
}

} ;
void PS::in() const
{
cout << "\nPS= " << t << "/" << m;
}
void main()
{
int t1=-3, m1=5;
const PS p = PS(abs(t1)+2,m1+2);
PS q;
clrscr();
q.nhap();
p.in();
q.in();
getch();
}
228

×