VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

C++ Cơ Bản

Ngôn ngữ lập trình C++ là gì? Lịch sử của C++ Các tính năng của C++ Cài đặt môi trường lập trình C++ Chương trình C++ đầu tiên Biến trong C++ Các kiểu dữ liệu trong C++ Ép kiểu trong C++ Từ khóa trong C++ Các toán tử trong C++ Comment trong C++ Các hằng số trong C++ count, cin và endl trong C++ Ký tự đặc biệt trong C++ Namespace trong C++ Template trong C++ Modifier trong C/C++

Câu Lệnh Điều Khiển C++

Mệnh đề if-else Mệnh đề switch Vòng lặp for Vòng lặp while Vòng lặp do-while Lệnh Break Lệnh Continue Lệnh Goto

C++ Function

Hàm trong C++ Hàm do người dùng định nghĩa Các kiểu hàm trong C++ Đệ quy trong C++ Call by value Call by reference

C++ Array

Mảng (array) trong C++ Mảng 2 chiều trong C++ Truyền mảng vào hàm

C++ Poiter

Con trỏ trong C++ Con trỏ Null trong C++ Con trỏ số học trong C++ Con trỏ và mảng trong C++ Mảng con trỏ trong C++ Con trỏ tới con trỏ trong C++ Truyền con trỏ tới hàm trong C++ Trả về con trỏ từ hàm trong C++

C++ Lớp Object

Khái niệm lập trình hướng đối tượng trong C++ Lớp và đối tượng trong C++ Constructor trong C++ Destructor trong C++ this trong C++ static trong C++ struct trong C++ Enumeration trong C++ Hàm Friend trong C++ Hàm Math trong C++ Tính kế thừa trong C++ Tính đa hình trong C++ Tính trừu tượng trong C++ Tính đóng gói trong C++ Interface trong C++

Nạp Chồng Toán Tử

Nạp chồng toán tử và Nạp chồng hàm trong C++ Nạp chồng toán tử một ngôi trong C++ Nạp chồng toán tử nhị phân trong C++ Nạp chồng toán tử quan hệ trong C++ Nạp chồng toán tử Input/Output trong C++ Nạp chồng toán tử ++ và -- trong C++ Nạp chồng toán tử gán trong C++ Nạp chồng toán tử gọi hàm () trong C++ Nạp chồng toán tử subscript [] trong C++ Nạp chồng toán tử truy cập thành viên lớp (->) trong C++

Lập Trình C++

Xử lý ngoại lệ trong C++ Đa luồng trong C++
Bài Tập C++ Có Lời Giải
1 / 3
❮ ❯

Nạp chồng toán tử truy cập thành viên lớp (->) trong C++


Nạp chồng toán tử subscript [] trong C++
Xử lý ngoại lệ trong C++

Nội dung chính

  • Nạp chồng toán tử truy cập thành viên lớp (->) trong C++
  • Ví dụ Nạp chồng toán tử truy cập thành viên lớp (->) trong C++

Nạp chồng toán tử truy cập thành viên lớp (->) trong C++

Toán tử truy cập thành viên lớp (->) có thể được nạp chồng, nhưng nó khá là phức tạp. Nó được định nghĩa để cung cấp một kiểu lớp một hành vi "pointer-like". Toán tử -> phải là một hàm thành viên. Nếu được sử dụng, kiểu trả về của nó phải là một con trỏ hoặc một đối tượng của một lớp để bạn có thể áp dụng.

Toán tử -> thường được sử dụng kết hợp với toán tử * để triển khai "smart pointer". Những con trỏ này là các đối tượng mà vận hành như các con trỏ thông thường, ngoại trừ việc chúng thực hiện các tác vụ khi bạn truy cập một đối tượng thông qua chúng, ví dụ: xóa đối tượng tự động hoặc khi con trỏ bị hủy hoặc khi con trỏ được sử dụng để trỏ tới đối tượng khác.

Toán tử -> có thể được định nghĩa như là một toán tử hậu tố một ngôi.


class Ptr{
   //...
   X * operator->();
};

Các đối tượng của lớp Ptr có thể được sử dụng để truy cập các thành viên của lớp X ở trên theo phương thức giống như cách các con trỏ được sử dụng. Ví dụ:


void f(Ptr p )
{
   p->m = 10 ; // la tuong tu (p.operator->())->m = 10
}

Lệnh p->m được thông dịch thành (p.operator->())->m.



Ví dụ Nạp chồng toán tử truy cập thành viên lớp (->) trong C++

Sử dụng cùng khái niệm trên, ví dụ sau sẽ giải thích cách một toán tử truy cập lớp -> trong C++ có thể được nạp chồng.


#include <iostream>
#include <vector>
using namespace std;

// gia su co mot lop VietTuts sau.
class VietTuts {
    static int i, j;
public:
    // cac smart pointer de hien thi
    void f() const { cout << i++ << endl; }
    void g() const { cout << j++ << endl; }
    void h() const { cout << "--------" << endl; }
};// phan dinh nghia cac thanh vien Static:

int VietTuts::i = 5;
int VietTuts::j = 20;

// Trien khai mot container cho lop tren
class VTContainer {
    vector<VietTuts*> a;
public:
    void add(VietTuts* vj)
    {
        a.push_back(vj);  // goi phuong thuc chuan cua vector.
    }
    friend class SmartPointer;
};

// trien khai smart pointer de truy cap thanh vien cua lop VietTuts.
class SmartPointer {
    VTContainer vc;
    int index;
public:
    SmartPointer(VTContainer& vjc)
    {
        vc = vjc;
        index = 0;
    }
    // tra ve gia tri de chi phan cuoi cua danh sach:
    bool operator++() // phien ban toan tu ++ (tien to)
    {
        if (index >= vc.a.size()) return false;
        if (vc.a[++index] == 0) return false;
        return true;
    }
    bool operator++(int) // phien ban toan tu ++ (hau to)
    {
        return operator++();
    }
    // nap chong operator->
    VietTuts* operator->() const
    {
        if (!vc.a[index])
        {
            cout << "Gia tri 0!!";
            return (VietTuts*)0;
        }
        return vc.a[index];
    }
};int main() {
    // so vong lap la 5 (ban thiet lap gia tri khac de xem ket qua)
    const int sz = 5;
    VietTuts o[sz];
    VTContainer vc;
    for (int i = 0; i < sz; i++)
    {
        vc.add(&o[i]);
    }
    SmartPointer sp(vc); // tao mot iterator
    do {
        sp->f(); // goi smart pointer
        sp->g();
        sp->h();
    } while (sp++);
    return 0;
}

Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:

Nạp chồng toán tử truy cập thành viên lớp (->) trong C++
Nạp chồng toán tử subscript [] trong C++
Xử lý ngoại lệ trong C++

Recent Updates

Sắp Tết 2024 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2024?Đa luồng trong C++Xử lý ngoại lệ trong C++Nạp chồng toán tử truy cập thành viên lớp (->) trong C++Nạp chồng toán tử subscript [] trong C++Nạp chồng toán tử gọi hàm () trong C++Nạp chồng toán tử gán trong C++Nạp chồng toán tử ++ và -- trong C++Nạp chồng toán tử Input/Output trong C++Nạp chồng toán tử quan hệ trong C++Nạp chồng toán tử nhị phân trong C++Nạp chồng toán tử một ngôi trong C++Nạp chồng toán tử và Nạp chồng hàm trong C++

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml