30/09/2018, 22:12 
               
            Static member của class trong C++
Các anh có thể “thông não” giùm em được không ạ , em vẫn không hiểu lắm về static member trong C++, rồi về toán tử :: trong C++ nữa.
Cảm ơn các anh chị
            Bài liên quan
         
                
            




This post was flagged by the community and is temporarily hidden.
::là để truy cập biến, hàm, v.v… trong 1 namespace, hoặc truy cập biến/hàm static của 1 class. Hiểu nó như là toán tử tìm kiếm “người” trong 1 “họ” nào đó vậy. Ví dụNguyễn::thì truy cập những người thuộc họ Nguyễn. Ví dụ lớp có 2 người tên “VănMinh” nhưng khác họ thì mỗi lần gọi là gọiTrần::VănMinhvớiNguyễn::VănMinhstatic member là của chung. Còn member bình thường là của riêng của đối tượng tạo ra từ class đó. Method bình thường gọi / truy cập hàm/biến static được, nhưng hàm static thì ko gọi được method/biến bình thường
output
nếu xài namespace thì các biến / hàm trong namespace đều là public, thực chất là chả có khái niệm public/private gì trong namespace cả. Đôi khi ta cần hạn chế truy cập vài biến/hàm trong namespace thì phải xài class + private static member.
1 biến static điển hình là
std::string::nposđược định nghĩa:static const size_t npos = -1;npos dùng để kiểm tra xem kết quả tìm kiếm chuỗi có tìm ra hay ko
nếu thay
s.nposbằngstd::string::nposcũng được nhưng quá dài, nếu thay bằng-1thì ko chắc, lỡ có thư viện nào chơi đểu định nghĩanpos = -2thì kiểm tra-1ko đúng. Với lại giá trị trả về củas.find(...)làsize_t, nghĩa là số nguyên ko dấu thì kiểm tra với-1là số nguyên có dấu thì ko “đúng” cho lắm.Anh giải thích thêm cho em về cách tạo namespace và cách sử dung của nó được không ạ? Em cảm ơn
This post was flagged by the community and is temporarily hidden.
Cách tạo namespace thì bạn có thể search trên mạng sẽ đầy đủ hơn, ở đây mình nói ngắn gọn về cách sử dụng của nó.
Giả sử bạn viết 1 function nhưng function đó đã tồn tại trước đó rồi nhưng bạn k thể nào đổi tên function được vì nếu đổi tên sẽ không thể hiện được chức năng của function đó, vậy làm thế nào để giải quyết vấn đề trên. Chúng ta có cách giải quyết đơn giản đó là đưa function đó vào chịu sử quản lý của namespace, 2 function cùng tên nhưng chịu sử quản lý của 2 namespace khác nhau thì không ảnh hưởng gì tới nhau cả.
cách tạo đơn giản lắm, bao xung quanh mấy cái hàm bằng namespace là được.