توضیحات
دانلود مجموعه سوالات برنامه نویس سی پلاس پلاس ++C با جواب تستی و تشریحی با فرمت pdf (فنی حرفه ای)
چند مورد از سوالات برنامه نویس سی پلاس پلاس:
1-خروجی کد زیر چیست؟
int x = 5;
int& ref = x;
int* ptr = &ref;
(*ptr)++;
std::cout << x << ” ” << ref;
الف) 5 5
ب) 6 5
ج) 5 6
د) 6 6 ☑️
توضیح: ref یک reference به x است و ptr آدرس همان متغیر را نگه می دارد با افزایش (*ptr)++ مقدار x به 6 تغییر میکند و هم x و هم ref مقدار 6 را نشان می دهند
2-کدام گزینه درباره std::move صحیح است؟
الف) حافظه را فیزیکی جابجا میکند
ب) یک rvalue reference ایجاد میکند ☑️
ج) همیشه کپی را جلوگیری میکند
د) فقط با smart pointer کار میکند
توضیح: std::move فقط یک cast به rvalue reference است و خود عملیات انتقال را انجام نمیدهد بلکه امکان استفاده از move semantics را فراهم میکند
3-خروجی کد زیر چیست؟
class Base {
public:
virtual void show() { std::cout << “Base “; }
};
class Derived : public Base {
public:
void show() override { std::cout << “Derived “; } }; Base* ptr = new Derived(); ptr->show();
delete ptr;
الف) Base
ب) Derived ☑️
ج) خطای کامپایل
د) رفتار تعریف نشده
توضیح: به دلیل استفاده از virtual، تابع show به صورت پلی مورفیک فراخوانی میشود و نسخه Derived اجرا می گردد
4-کدام گزینه درباره constexpr صحیح نیست؟
الف) می تواند در compile-time محاسبه شود
ب) همیشه باید در compile-time محاسبه شود ☑️
ج) می تواند با توابع استفاده شود
د) از C++11 معرفی شده است
توضیح: constexpr می تواند در compile-time یا runtime محاسبه شود بسته به context استفاده
5-خروجی کد زیر چیست؟
std::vector v = {1, 2, 3};
auto it = v.begin();
v.push_back(4);
std::cout << *it;
الف) 1
ب) 4
ج) خطای کامپایل
د) رفتار تعریف نشده (UB) ☑️
توضیح: push_back ممکن است باعث reallocation شود و iterator قبلی را invalidate کند که منجر به UB میشه
6-خروجی کد زیر چیست؟
int arr[] = {1, 2, 3, 4, 5};
int* p = arr + 2;
std::cout << p[-1] << ” ” << p[1];
الف) 3 1
ب) 4 2 ☑️
ج) 5 3
د) خطای کامپایل
توضیح: p به arr[2] اشاره دارد p[-1] معادل arr[1] (یعنی 2) و p[1] معادل arr[3] (یعنی 4) است
7-کدام گزینه درباره std::unique_ptr صحیح است؟
الف) قابل کپی است
ب) می تواند ownership را share کند
ج) فقط قابل move است ☑️
د) reference counting دارد
توضیح: std::unique_ptr exclusive ownership دارد قابل کپی نیست و فقط با move می توان ownership را منتقل کرد
8-خروجی کد زیر چیست؟
class A {
public:
A() { std::cout << “A “; }
~A() { std::cout << “~A “; }
};
int main() {
A* p = new A[2];
delete p;
}
الف) A A ~A ~A
ب) A A ~A
ج) A ~A A ~A
د) رفتار تعریف نشده ☑️
توضیح: برای آرایه ای که با new[] ساخته شده باید از delete[] استفاده شود استفاده از delete به جای delete[] منجر به UB میشود
9-کدام گزینه درباره lambda capture در C++ صحیح نیست؟
الف) [=] همه متغیرها را by value می گیرد
ب) [&] همه متغیرها را by reference می گیرد
ج) [this] اعضای کلاس را capture میکند
د) [=, &x] همه را by reference و فقط x را by value می گیرد ☑️
توضیح: [=, &x] به معنای capture همه by value و فقط x by reference است نه برعکس







دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.