توابع عضو کلاس در ++C

یک تابع عضو کلاس، تابعی است که تعریف یا نمونه اولیه‌اش درون تعریف کلاس قرار دارد. این تابع در اشیا عضو آن کلاس به کار رفته و به همه اعضای آن شی دسترسی دارد.

اجازه دهید از کلاسی که پیش از این تعریف کردیم اینجا نیز بهره بگیریم و به جای دسترسی مستقیم به عناصر آن، با استفاده از تابع عضو آنها را در اختیار بگیریم.

class Box {
   public:
      double length;         // Length of a box
      double breadth;        // Breadth of a box
      double height;         // Height of a box
      double getVolume(void);// Returns box volume
};

توابع عضو را می‌توان درون تعریف کلاس، تعریف کرد و یا با استفاده عملگر وضوح دامنه (:)(scope resolution operator) آنها را جداگانه تعریف کرد. تعریف یک تابع عضو درون تعریف کلاس باعث می‌شود که تابع به صورت inline اعلان شود، حتی اگر مشخصه inline صراحتاً استفاده نشود. بنابراین، می‌توان تابع ()Volume را به صورت زیر تعریف کرد.

class Box {
   public:
      double length;      // Length of a box
      double breadth;     // Breadth of a box
      double height;      // Height of a box
   
      double getVolume(void) {
         return length * breadth * height;
      }
};

می‌توان همین تابع را خارج از کلاس و با استفاده از عملگر وضوح دامنه (::) به شکل زیر تعریف کرد.

double Box::getVolume(void) {
   return length * breadth * height;
}

تنها نکته مهم در اینجا این است که باید نام کلاس را قبل از عملگر «::» قرار داد. تابع عضو را می‌توان با استفاده از عملگر (.) روی یک شی به کار برد، در این صورت همانند مثال زیر، تابع روی داده مربوط به شی عمل می‌کند.

Box myBox;          // Create an object

myBox.getVolume();  // Call member function for the object

اجازه دهید مفاهیم بالا را برای تغییر دادن مقادیر اعضای مختلف کلاس به کار گیریم.

#include <iostream>
using namespace std;
class Box {
public:
double length;         // Length of a box
double breadth;        // Breadth of a box
double height;         // Height of a box
// Member functions declaration
double getVolume(void);
void setLength( double len );
void setBreadth( double bre );
void setHeight( double hei );
};
// Member functions definitions
double Box::getVolume(void) {
return length * breadth * height;
}
void Box::setLength( double len ) {
length = len;
}
void Box::setBreadth( double bre ) {
breadth = bre;
}
void Box::setHeight( double hei ) {
height = hei;
}
// Main function for the program
int main() {
Box Box1;                // Declare Box1 of type Box
Box Box2;                // Declare Box2 of type Box
double volume = 0.0;     // Store the volume of a box here
// box 1 specification
Box1.setLength(6.0); 
Box1.setBreadth(7.0); 
Box1.setHeight(5.0);
// box 2 specification
Box2.setLength(12.0); 
Box2.setBreadth(13.0); 
Box2.setHeight(10.0);
// volume of box 1
volume = Box1.getVolume();
cout << "Volume of Box1 : " << volume <<endl;
// volume of box 2
volume = Box2.getVolume();
cout << "Volume of Box2 : " << volume <<endl;
return ;
}

با اجرای کد فوق، خروجی زیر حاصل می شود.

Volume of Box1 : 210
Volume of Box2 : 1560

منبع: ترجمه از سایت tutorialspoint.com

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *