30/09/2018, 19:06

hỏi về const trong c++

em đang xậy dựng 1 lớp string
và khi overload ( quá tải toán tử =) thì có đoạn code như sau:

const string operator += (const string& a);// khai báo hàm bạn của lớp
const cstring& cstring::operator=(const cstring &a)// nội dung hàm quá tải =
{
	dodai=a.dodai;
	delete []s;
	s = new char[dodai+1];
	strcpy(s,a.s);
	return *this;
}

trong chỗ const string operator += (const string& a) thì tại sao có ‘&a’ cũng đc mà ‘a’ thôi cũng được ạ

Bùi Trung Thông viết 21:16 ngày 30/09/2018

& là dấu tham chiếu, &a nó sẽ tham chiếu thẳng đến vùng nhớ của a vào thao tác trên đó luôn, còn truyền a là tham trị, nó sẽ tạo 1 bản sao của a và thao tác trên đó (chứ không phải a) [quote=“vu_nguyentuan, post:1, topic:18335”]
(const string& a)
[/quote]
nếu chỉ muốn truyền giá trị vào mà không bị sửa thì phải dùng const, dùng tham trị cũng được nhưng nhưng nó phải gọi copy contructor. (chậm hơn là thao tác trực tiếp trên bộ nhớ của a)

Bài liên quan
0