Home / C/C++ / When to use “explicit” keyword

When to use “explicit” keyword

    Từ khóa explicit trong C++ được sử dụng để đánh dấu các constructor (hàm tạo) để không chuyển đổi ngầm định các loại trong C++. Nó là tùy chọn đối với các hàm tạo nhận chính xác một argument (Nó có 1 đối số hoặc có các giá trị mặc định cho tất cả các đối số khác) và hoạt động trên các hàm tạo (với một đối số duy nhất) vì đó là những hàm tạo duy nhất có thể được sử dụng trong typecasting.

    Có một vài lý do tại sao bạn có thể muốn sử dụng từ khóa explicit:

    • Để ngăn chặn chuyển đổi ngẫu nhiên. Ví dụ: nếu bạn có một lớp MyClass có một constructor có đối số là số nguyên, bạn có thể muốn sử dụng từ khóa explicit để ngăn ai đó vô tình chuyển đổi một chuỗi thành một đối tượng MyClass bằng cách viết MyClass c = “hello” .
    • Để làm cho mã của bạn rõ ràng hơn. Nếu bạn sử dụng từ khóa explicit , sẽ rõ ràng cho người đọc mã của bạn rằng constructor không được dự định sử dụng cho các chuyển đổi ngầm.
    • Để cải thiện tính an toàn kiểu. Bằng cách ngăn chặn các chuyển đổi ngầm, bạn có thể giúp đảm bảo mã của mình an toàn hơn về kiểu.

    Dưới đây là một số hướng dẫn chung về khi sử dụng từ khóa explicit:

    • Sử dụng từ khóa explicit cho tất cả các constructor có một đối số, trừ khi bạn muốn cụ thể cho phép các chuyển đổi ngầm.
    • Sử dụng từ khóa explicit cho constructor sao chép và constructor di chuyển, ngay cả khi chúng có nhiều hơn một đối số.
    • Sử dụng từ khóa explicit cho bất kỳ constructor nào mà bạn không muốn sử dụng cho các chuyển đổi ngầm.

    EXAMPLE:

    Cuối cùng, quyết định có sử dụng từ khóa explicit hay không là tùy thuộc vào bạn. Tuy nhiên, đó là một thực hành tốt để sử dụng nó bất cứ khi nào có thể để cải thiện độ rõ ràng và an toàn của mã của bạn

    Download Project (VS2015):

    Google Drive 1 Google Drive 2

    __FreeSourceC.com__

    About admin

    Check Also

    [ SC Tutorial ] 3. SystemC Data types

    SystemC có một số kiểu dữ liệu được xác định trước để hỗ trợ các …

    Leave a Reply

    Your email address will not be published. Required fields are marked *