nếu cần lấy tổng điểm ra ngoài thì viết 1 cái hàm tongdiem() trong class ThiSinh, trả về diemchuan.tongdiem(), khỏi cần gán tongdiem vô 1 cái biến tạm làm gì nữa.
class ThiSinh
{
public:
float tongdiem()const { return diemchuan.tongdiem(); }
};
//...
ThiSinh a;
//... gán giá trị cho a...
std::cout << a.tongdiem() << "\n"; //in ra tổng điểm của thí sinh a
mấy hàm ko chỉnh sửa gì tới các biến trong class thì để const ở phía sau hết.
để lấy khoithi diemchuan trong class ThiSinh thì ta có thể trả về 1 bản copy của nó: khoithi getDiemchuan()const;
nhưng như vậy tốn 1 lần copy, vậy nên trả về tham chiếu hay trả về đích thị diemchuan đó: khoithi& getDiemchuan();
nhưng như vậy thì khi viết a.getDiemchuan() có thể viết thành a.getDiemchuan() = khoithi(...) như vậy là làm sai giá trị của a.diemchuan (vd 1 thí sinh xem điểm thi của mình có thể chỉnh sửa điểm thi luôn, như vậy là vô lý)
vì vậy phải trả về const&: const khoithi& getDiemchuan()const;
nhưng trả về const vậy thì hàm tongdiem() ko xài được vì nó ko có const ở phía sau, tức là nó có thể thay đổi giá trị các biến trong object gọi nó, nên constant object ko thể gọi hàm tongdiem() được, nên phải thêm const vô phía sau.
ví dụ cụ thể đi. Ngôn ngữ nào nữa. Làm cái hàm get() là đủ rồi?
vd như chương trình này nè p
Mình muốn lấy kết quả từ tổng điểm và điểm chuẩn từ lớp khối thi cho lớp TS thì làm sao bạn
gọi
diemchuan.tongdiem()
vớidiemchuan.diemchuan()
phải như ni không bạn
mình gán cho nó một biến trong lớp thí sinh tongdiem
nếu cần lấy tổng điểm ra ngoài thì viết 1 cái hàm tongdiem() trong class ThiSinh, trả về diemchuan.tongdiem(), khỏi cần gán tongdiem vô 1 cái biến tạm làm gì nữa.
vậy mình cần phải viết bên lớp khối thi rồi viết bên lớp THISINH luôn hả không có cách khác nek bạn
tổng diểm nằm trong lớp bao nha bạn
có thể viết 1 hàm getDiemchuan() trả về diemchuan:
sửa cái hàm tongdiem() trong khoithi lại, thên const vô phía sau nữa:
float tongdiem()const
float diemchuan()const
mà class khoithi sao lại có điểm 3 môn ở trỏng? Đáng lẽ phải tách ra thành class điểm thi mới đúng
tại sao phải thêm const vào vậy bạn?
class khoithi bao gồm diểm thi với khối thi à đề yêu cầu à
mấy hàm ko chỉnh sửa gì tới các biến trong class thì để
const
ở phía sau hết.để lấy khoithi diemchuan trong class ThiSinh thì ta có thể trả về 1 bản copy của nó:
khoithi getDiemchuan()const;
nhưng như vậy tốn 1 lần copy, vậy nên trả về tham chiếu hay trả về đích thị diemchuan đó:
khoithi& getDiemchuan();
nhưng như vậy thì khi viết
a.getDiemchuan()
có thể viết thànha.getDiemchuan() = khoithi(...)
như vậy là làm sai giá trị củaa.diemchuan
(vd 1 thí sinh xem điểm thi của mình có thể chỉnh sửa điểm thi luôn, như vậy là vô lý)vì vậy phải trả về const&:
const khoithi& getDiemchuan()const;
nhưng trả về const vậy thì hàm tongdiem() ko xài được vì nó ko có const ở phía sau, tức là nó có thể thay đổi giá trị các biến trong object gọi nó, nên constant object ko thể gọi hàm tongdiem() được, nên phải thêm const vô phía sau.
bạn có thể giải thích rõ về việc dùng const trong này được không chứ mình không hiểu lắm
ta mới sửa lại rồi đó. Đơn giản là nếu ko có const thì
trong khi hàm tongdiem() ko thay đổi giá trị gì của object gọi nó, nên p và r phải gọi được tongdiem() mới đúng.