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
❮ ❯

Hàm Friend trong C++


Enum trong C++
Các hàm Math trong C++

Nếu một hàm được định nghĩa là một hàm friend trong C++, thì dữ liệu private và protected của một lớp có thể được truy cập bằng cách sử dụng hàm.

Để truy cập dữ liệu, việc khai báo hàm friend nên được thực hiện bên trong phần thân của một lớp bắt đầu bằng từ khóa friend.


Nội dung chính

  • Khai báo hàm friend trong C++
  • Ví dụ hàm friend trong C++
  • Lớp Friend trong C++

Khai báo hàm friend trong C++

class class_name {    
    friend data_type function_name(cac_doi_so);
};    

Trong khai báo trên, hàm friend được khai báo bởi từ khóa friend. Hàm này có thể được định nghĩa ở bất cứ đâu trong chương trình như hàm C++ bình thường.

Đặc điểm của hàm Friend:

  • Hàm không nằm trong phạm vi của lớp mà nó đã được khai báo là friend.
  • Nó không thể được gọi bằng cách sử dụng đối tượng vì nó không nằm trong phạm vi của lớp đó.
  • Nó có thể được gọi như một hàm bình thường mà không cần sử dụng đối tượng.
  • Nó không thể truy cập trực tiếp vào tên thành viên và phải sử dụng tên đối tượng và dấu chấm toán tử với tên thành viên.
  • Nó có thể được khai báo trong phần private hoặc public.

Ví dụ hàm friend trong C++

Ví dụ 1: hàm friend trong C++ được sử dụng để in chiều dài của Box.

#include <iostream>

using namespace std;

class Box {
private:
    int length;

public:
    Box() : length(0) {}
    friend int printLength(Box); //ham friend
};

int printLength(Box b) {
    b.length += 10;
    return b.length;
}

int main() {
    Box b;
    cout << "Chieu dai cua box: " << printLength(b) << endl;
    return 0;
}

Kết quả:

Chieu dai cua box: 10

Ví dụ 2: hàm friend được sử dụng trong 2 lớp:

#include <iostream>
using namespace std;
class B; // khai bao lop B
class A {
    int x;

public:
    void setdata(int i) {
        x = i;
    }
    friend void min(A, B); // ham friend
};
class B {
    int y;

public:
    void setdata(int i) {
        y = i;
    }
    friend void min(A, B); // ham friend
};

void min(A a, B b) {
    if (a.x <= b.y)
        std::cout << a.x << std::endl;
    else
        std::cout << b.y << std::endl;
}
int main() {
    A a;
    B b;
    a.setdata(10);
    b.setdata(20);
    min(a, b);
    return 0;
}

Kết quả:

10

Trong ví dụ trên, hàm friend min() được sử dụng trong hai lớp, nghĩa là hàm min() có thể truy cập các thành viên riêng của cả hai lớp A và B.


Lớp Friend trong C++

Một lớp friend có thể truy cập cả các thành viên private và protected của lớp mà nó đã được khai báo là friend.

Ví dụ:

#include <iostream>

using namespace std;

class A {
    int x = 5;
    friend class B; // lop friend
};
class B {
public:
    void display(A &a) {
        cout << "Gia tri cua x la: " << a.x;
    }
};

int main() {
    A a;
    B b;
    b.display(a);
    return 0;
}

Kết quả:

Gia tri cua x la: 5

Enum trong C++
Các hàm Math trong C++

Recent Updates

Đ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++Sắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

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