Hàm friend trong C++



Hàm friend trong C++ của một lớp được định nghĩa bên ngoài phạm vi lớp đó, nhưng nó có quyền truy cập tất cả thành viên private và protected của lớp đó. Ngay cả khi các nguyên mẫu cho hàm friend xuất hiện trong định nghĩa lớp, thì các hàm friend không là các hàm thành viên.

Một friend có thể là một hàm, một mẫu hàm, hoặc hàm thành viên, hoặc một lớp hoặc một mẫu lớp, trong trường hợp này, toàn bộ lớp và tất cả thành viên của nó là friend.

Để khai báo một hàm dạng hàm friend của một lớp, đặt trước nguyên mẫu hàm đó trong định nghĩa lớp với từ khóa friend trong C++, như sau:

class Box
{
   double chieurong;
public:
   double chieudai;
   friend void inChieuRong( Box box );
   void setChieuRong( double rong );
};

Để khai báo tất cả hàm thành viên của lớp LopHai là dạng friend của lớp LopMot, đặt một khai báo sau trong định nghĩa của lớp LopMot:

friend class LopHai;

Bạn xét chương trình sau:

#include <iostream>
 
using namespace std;
 
class Box
{
   double chieurong;
public:
   friend void inChieuRong( Box box );
   void setChieuRong( double rong );
};

// phan dinh nghia ham thanh vien
void Box::setChieuRong( double rong )
{
    chieurong = rong;
}

// Ghi chu: inChieuRong() khong la ham thanh vien cua bat cu class nao.
void inChieuRong( Box box )
{
   /* Boi vi, ham inChieuRong() la ham friend cua Box, do vay no co the
    truc tiep truy cap bat cu thanh vien nao cua class nay */
    
   cout << "Chieu rong cua box la: " << box.chieurong <<endl;
}
 
// ham main cua chuong trinh
int main( )
{
   Box box;
 
   // thiet lap chieurong cua box, khong su dung ham thanh vien
   box.setChieuRong(25.3);
   
   // su dung ham friend de in chieu rong.
   inChieuRong( box );
 
   return 0;
}

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

Hàm Friend trong C++

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.


lop_va_doi_tuong_trong_cplusplus.jsp


Tài liệu giáo viên