PDA

View Full Version : سوال: تعریف اپراتور نات



aapalireza
چهارشنبه 17 آذر 1389, 23:09 عصر
سلام
خواهشمند است طریقه‌ی تعریف operator ! را آموزش دهید

Salar Ashgi
پنج شنبه 18 آذر 1389, 11:55 صبح
بهتر است جهت یادگیری چنین موضوعات پایه ای ، به کتاب مراجعه کنید ؛ ولی با این حال مثالی براتون قرار میدم :

در این مثال فرض شده که عملگر ! برای کلاس A یک واحد از مقدار متغیر کلاس میکاهد .



#include <iostream>
#include <conio>
class A{
public:
A(int x){X=x;}
A(){X=0;}
A operator!();
int Square(){return X*X;}
void Print(){cout<<"X= "<<X<<endl;}
private:
int X;};
//---------------
A A::operator!(){
A obj;
obj.X = X-1;
return obj;}
//---------------
int main(){
A obj1(12);
A obj2;
obj2 = !obj1;
obj2.Print();
getch();
}


موفق باشید ./

aapalireza
پنج شنبه 18 آذر 1389, 21:06 عصر
سلام
ممنون, ولی منظور مرا متوجه نشدید!
می‌خواهم فرض کنیم کامپیوتر اپراتور نات را نمی‌شناسد و آن را برایش تعریف کنیم!
بدیهی که ! را نداریم ولی باید یه کاری کنیم با کد ما ! دقیقاً همان کاری که در واقعیت دارد را انجام دهد...

Salar Ashgi
پنج شنبه 18 آذر 1389, 21:32 عصر
ولی منظور مرا متوجه نشدید!

آخه شما خیلی کلی سوالتون رو مطرح کردید ، چون با دیدن کلمه operator و متن سوال شما ، مفهوم سربارگذاری عملگرها
یا همون Operator Overloading استنباط میشه ، بهرحال ؛ اول از همه باید راجب دلیل اینکه شما چنین فرضی را در نظر
می گیرید ، توضیح دهید ، ثانیا عملگر ! همیشه که وظیفه ثابتی ندارد ، پس باید دقیقتر توضیح دهید .

aapalireza
پنج شنبه 18 آذر 1389, 21:36 عصر
بله, حق با شماست, شرمنده!
من فکر میکنم باید با متغیر بولین تعریف کنیم
ولی اصلاً با اپراتورها کار نکردم,

می‌خواهم عملکرد ! را نمایش دهم

مثلاً اگر a صحیح باشد, !a فالس و غلط باشد, دقیقاً مثل ناتی که در محاسبات معمول بهره می بریم!

ممنون