PDA

View Full Version : بررسی ویژگی های C++‎‎‎0x



r00tkit
دوشنبه 03 آبان 1389, 23:13 عصر
سلام

شما مطمئنا" می دونید C++‎‎ توسط ISO اپدیت شده که codename این اپدیت C++‎‎0x هستش و در Visual Studio 2010 این ویژگی ها پشتیبانی می شه
این نوشته سعی می کنه به بررسی این ویژگی ها بپردازه

پیش نیاز ها : درک متوسط از زبان C++‎‎

امید وارم مفید واقع بشه ، با تشکر Geek1982



1) کلمه ی کلیدی auto :

این کلمه کلیدی برای تشخیص(استنتاج) نوع تایپ از روی عبارت استفاده می شه ( همون var تو C#)

البته قبلا" این کلمه کلیدی در کنار این لیست (storage-class specifiers )



auto
register
static
extern


بودش ولی استفاده نمی شد

مثال: متغیر های auto محدود به اسکوپ می شن که به صورت پیش فرض همن طوریه




int main()
{
auto int i = 0; // Explicitly declared as auto.
int j = 0; // Implicitly auto.
}

کار بورد فعلی:



auto nVariable = 16;شما یه متغیبر بدون type مشخص می کنید و کامپایلر ار روی عبارت طرف راست ان نوع عبارت رو تعیین می کنه حالا کد با کامپایلر تبدیل می شه به:



auto nVariable = 16;شما حتما" به متغییر هاتون مقدار بدین در غیر این صورت کامپایلر error می گیره

نکتهی مهم: نوع عبارات در زمان کامپایل تشخیص داد می شه نه اجرا

چند مثال دیگه :


const auto PI = 3.14; // double
volatile auto IsFinished = false; // bool
const auto nStringLen = strlen("CodeProject.com");
auto iArray = new int[10]; // int*
محدودیت ها :
ارایه نمی تونه auto باشه



auto aArray1[10];
auto aArray2[]={1,2,3,4,5};
// error C3532: the element type of an array
// cannot be a type that contains 'auto'
نمی تونه نوع برگشتی یا ارگومان تابع باشه



auto ReturnDeduction();

void ArgumentDeduction(auto x);
// C3533: 'auto': a parameter cannot have a type that contains 'auto'به جاش می تونید از template استفاده کنید

نمی تونه عضو کلاس یا struct باشه مگر اینکه static باشه

به این صورت هم نمی شه استفاده کرد { جمله هام تموم شده :) }



auto a=10, b=10.30, s="new";
کی باید از auto استفاده کنیم

زمانی که نوع تایپ وابسطه به کامپایلر/ پلتفورم هستش

auto nLength = strlen("The auto keyword.");زمانی که تایپ طولانی هستش
std::vector<std::string> Strings;و کلی نکتهی دیگه :)

بیشتر بخونید :auto Keyword (type deduction) (http://msdn.microsoft.com/en-us/library/dd293667.aspx)




موضوع بعدی :decltype