3-1- تفاوت بین کلاس‌ها و ساختار‌ها

پیش از پرداختن به مفاهیم OOP، بیایید به تفاوت‌های اساسی بین ساختار و کلاس نگاهی بیاندازیم. فهرست 2-1 به درک تمایز بین آنها کمک می‌کند.

فهرست 2-1. کد نمونه برای نشان دادن کلاس ++C و ساختار

#include <iostream>

#include <string>

using namespace std;

struct Robot_Struct

{

int id;

int no_wheels;

string robot_name;

};

class Robot_Class

{

public:

int id;

int no_wheels;

string robot_name;

void move_robot();

void stop_robot();

};

void Robot_Class::move_robot()

{

cout<<“Moving Robot”<<endl;

}

void Robot_Class::stop_robot()

{

cout<<“Stopping Robot”<<endl;

}

int main()

{

Robot_Struct robot_1;

Robot_Class robot_2;

robot_1.id = 2;

robot_1.robot_name = “Mobile robot”;

robot_2.id = 3;

robot_2.robot_name = “Humanoid robot”;

cout<<“ID=”<<robot_1.id<<“\t”<<“Robot Name”<<robot_1.

robot_name<<endl;

cout<<“ID=”<<robot_2.id<<“\t”<<“Robot Name”<<robot_2.

robot_name<<endl;

robot_2.move_robot();

robot_2.stop_robot();

return 0;

}

این کد یک ساختار و یک کلاس را تعریف می‌کند. نام ساختار Robot_Struct و نام کلاس Robot_Class است.

شکل 2-13 نحوه تعریف یک ساختار را نشان می‌دهد. این ساختار متغیرهایی مانند شناسه، نام و تعداد چرخ‌ها را تعریف می‌کند.

شکل ‏2‑13: تعریف یک ساختار در C++

همانطور که می‌دانید، یک ساختار دارای یک نام بوده و داخل آن متغیرها اظهار می‌شوند. بیایید ببینیم تعریف یک کلاس به چه شکلی است (به شکل 2-14 نگاه کنید).

شکل ‏2‑14: تعریف یک کلاس در C++

خوب، تفاوت بین این دو چیست؟ یک ساختار تنها می‌تواند متغیرهای مختلف را تعریف کند، اما یک کلاس علاوه بر تعریف متغیرهای مختلف، می‌تواند توابعی را نیز تعریف کند. کلاس نشان داده شده در شکل 2-14 همراه با متغیرها، دو توابع را اظهار می‌کند. خوب، تعریف هر تابع کجاست؟ ما می‌توانیم تابع را داخل کلاس یا خارج از کلاس تعریف کنیم. البته استانداردش این است که تعریف تابع، خارج از خود کلاس باشد تا کلاس تعریفی کوتاه و مختصر شود.

شکل 2-15 تعریف توابع ذکر شده در کلاس را نشان می‌دهد.

شکل ‏2‑15: تعریف خارجی تابع داخل کلاس

در تعریف تابع، اولین عبارت، نوع داده­ی بازگشتی است، به دنبال آن نام کلاس، و سپس نام تابع بعد از :: می‌آید که بدان معنا است که تابع فلان در داخل کلاس فلان است. داخل تعریف تابع، می‌توانیم کدمان را اضافه کنیم که در مثال ما یک پیام را چاپ می‌کند.

تاکنون تعریف تابع در یک کلاس را دیدید. گام بعدی یادگیری چگونگی خواندن/ نوشتن در متغیرها و توابع است.

[41] flags

[42] www.cmake.org/documentation/