Phương thức hằng của class | CppDeveloper

Bất kỳ hàm thành viên nào của lớp nào cũng có thể được khai báo là const.

Nó tương đương với một lời hứa rằng hàm đó sẽ không sửa đổi trạng thái của đối tượng thuộc lớp đó. Trong cú pháp của khai báo thì từ khoá const được đặt sau danh sách tham số, như sau →

  • Khai báo hàm:

type name(parameters) const;

  • Định nghĩa hàm:

type name(parameters) const { … }

Hãy xem khai báo lớp sau →

1

2

3

4

5

6

7

8

9

class

Class

{

public

:

    

int

field

;

    

Class

(

int

n

)

:

field

(

n

)

{

}

;

    

Class

(

Class

&c) : field(0) { };

    

Class

(

void

)

:

field

(

1

)

{

}

;

    

void

set

(

int

n

)

{

field

=

n

;

}

    

int

get

(

void

)

const

{

return

field

;

}

}

;

Bạn có thể thấy sự khác biệt giữa lớp này và lớp đã thảo luận ở bài trước không ?

Yes, hàm get được khai báo là một hàm const.

Kết quả là, dòng dưới đây sẽ được coi là hợp lệ:

1

i

=

o2

.

get

(

)

;

Lưu ý: trình biên dịch sẽ cố gắng buộc chương trình phải giữ lời hứa. Bạn không nên sửa đổi bất kỳ biến thành viên nào của lớp hoặc gọi các hàm không phải là const bên trong hàm get bởi vì trình biên dịch sẽ coi đó là lỗi.