نوشته شده توسط
vahid-p
پس منظور شما اینه که ما میتونیم از متدها و فیلدهای تعریف شده در هدر این کلاس استفاده کنیم (اگر حتی هدر این کلاس هم نباشه از خود کلاس فقط میشه استفاده کرد) با اینکه این متدها هنوز هیچ بدنه ای ندارن. شبیه اینترفیس میشه با این تفاوت که میتونیم آبجکت جدید ازش بسازیم بدون پیاده سازی.
وقتی تو یک کلاس بخواهید متد دوست تعریف کنید و در اعلان تابع دوست یکی از آرگومان ها یک کلاس دیگه باشه از این روش استفاده میشه کرد.
#include <iostream>
using namespace std ;
class B ;
class A {
private :
int data;
public :
A() : data(4) { }
int friend ffunc(A , B);
};
class B {
private :
int data;
public :
B() : data(7) { }
int friend ffunc(A , B);
};
int ffunc(A a ,B b){
retrun(a.data + b.data);
};
و خوب حالا قبل از اینکه تابع دوست را پیاده سازی کنید باید کلاس B را پیاده سازی کنید حالا شاید بگید که خوب قبلش میام کلاس B را تعریف میکنم و بعد تو کلاس A فراخوانی میکنم بله درسته !
ولی این تکنیک زمانی کاربری داره که شما چند کلاس را تو یک فایل سورس سازماندهی میکنید. خوب باالطبع در این وضعیت فرقی نداره که اول کلاس A تعریف بشه ویا کلاس B چون در هر صورت باید قبل از استفاده هرکدوم از کلاسها اول تعریف بشن.