PDA

View Full Version : سوال: مقداردهی اولیه یک عضو داده ثابت با یک مقداردهی کننده ی عضو در کلاس



Salar Moghaddam
یک شنبه 27 بهمن 1392, 20:08 عصر
سلام دوستان
این عنوان یکی از موضوعات یتل بود من خوندم متوجه نشدم دقیق چی هست و چجوری استفاده میشه و چه تفاوتی با سازنده در کلاس داره؟
داشت در مورد تابع عضوی به نام Increment صحبت می کرد
خوشحال میشم با حوصله جواب بدید :)
پ.ن:
مثلا کد زیر چرا کار نمی کنه؟

#include <iostream>
using namespace std;

class test {
public:
Increment(int a, int b) {
: count(a),
co(b)
{

}
void print() const {
cout << count << endl << co << endl;
}
private:
int cout;
const int co;
}

int main() {
test t(1, 2);
t.print();
}

rahnema1
دوشنبه 28 بهمن 1392, 09:48 صبح
سلام،
مقدار دهی اولیه یا initialize کردن یک عضو داده ای «غیر استاتیک» کلاس که ثابت یا const باشد تنها از طریق سازنده کلاس یا constractor امکان پذیر است و با مقداردهی کننده های دیگر قابل انجام نیست
در مثالی که شما گذاشتید صرف نظر از چند اشباه تایپی شما به جای Increment باید از تابع سازنده استفاده کنید . تابع سازنده همنام کلاس است و مقدار برگشتی ندارد که test است.
شما متغیر co را به صورت const یا ثابت اعلان کردید «و البته استاتیک هم نیست». بنابراین تنها راه مقداردهی اولیه آن از طریق سازنده test می باشد.


#include <iostream>
using namespace std;
class test {
public:
test(int a, int b)
: count(a),
co(b)
{

}
void print() const {
cout << count << endl << co << endl;
}
private:
int count;
const int co;
};
int main() {
test t(1, 2);
t.print();
}