يقدم موقعنا تمارين مصححة في لغات البرمجة مثل C / C ++ و PHP
. اكتشف أيضًا مدونتنا التي تحتوي على آخر أخبار التكنولوجيا من هنا

Références et const C++

abdelouafi

Administrator
أحدث المقالات
إذا كنت ترغب في مشاهدة الصور ، يرجى النقر عليها
Blog
SUIVEZ NOTRE CHAINE YOUTUBE: قم بالتسجيل في قناتنا عبر هذا الرابط https://www.youtube.com/channel/UCCITRMWPcElh-96wCS3EyUg
devoir 1 math tronc commun

مجموعة من دروس و فروض جميع المستويات

دروس الإعدادي - دروس الثانوي الثأهيلي - دروس التعليم الابتدائي - فروض مختلف المستويات الدراسية

فضلا و ليس أمرا شارك هذه الصفحة مع أصدقائك:
Référence à la valeur const

Tout comme il est possible de déclarer un pointeur sur une valeur const, il est également possible de déclarer une référence à une valeur const. Ceci est fait en déclarant une référence en utilisant le mot clé const.
Code:
const int value = 5;
const int &ref = value; // ref is a reference to const value

Les références aux valeurs const sont souvent appelées «références const».

Initialisation des références aux valeurs const

Contrairement aux références aux valeurs non constantes, qui ne peuvent être initialisées qu'avec des valeurs l non constantes, les références aux valeurs const peuvent être initialisées avec une valeur l non constante, des valeurs const l et des valeurs r.
Code:
int x = 5;
const int &ref1 = x; // okay, x is a non-const l-value
const int y = 7;
const int &ref2 = y; // okay, y is a const l-value
const int &ref3 = 6; // okay, 6 is an r-value

Tout comme un pointeur sur une valeur const, une référence à une valeur const peut faire référence à une variable non-const. En cas d'accès via une référence à une valeur const, la valeur est considérée comme constante même si la variable d'origine n'est pas:
Code:
int value = 5;
const int &ref = value; // create const reference to variable value
value = 6; // okay, value is non-const
ref = 7; // illegal -- ref is const

Une référence à un const est souvent appelée une référence const, bien que cela crée une nomenclature incohérente avec des pointeurs.

Les références aux valeurs-r prolongent la durée de vie de la valeur référencée

Normalement, les valeurs r ont une portée d'expression, ce qui signifie que les valeurs sont détruites à la fin de l'expression dans laquelle elles sont créées.
Code:
std::cout << 2 + 3; // 2 + 3 evaluates to r-value 5, which is destroyed at the end of this statement

Toutefois, lorsqu'une référence à une valeur const est initialisée avec une valeur r, la durée de vie de la valeur r est étendue pour correspondre à la durée de vie de la référence.
Code:
int somefcn()
{
    const int &ref = 2 + 3; // normally the result of 2+3 has expression scope and is destroyed at the end of this statement
    // but because the result is now bound to a reference to a const value...
    std::cout << ref; // we can use it here
} // and the lifetime of the r-value is extended to here, when the const reference dies

Références constantes comme paramètres de fonction

Les références utilisées en tant que paramètres de fonction peuvent également être const. Cela nous permet d’accéder à l’argument sans en faire une copie, tout en garantissant que la fonction ne changera pas la valeur référencée.
Code:
// ref is a const reference to the argument passed in, not a copy
void changeN(const int &ref)
{
    ref = 6; // not allowed, ref is const
}

Les références aux valeurs const sont particulièrement utiles en tant que paramètres de fonction en raison de leur polyvalence. Un paramètre de référence const vous permet de transmettre un argument non constant de valeur l, un argument constant de valeur l, un littéral ou le résultat d'une expression:
Code:
#include <iostream>
void printIt(const int &x)
{
    std::cout << x;
}
int main()
{
    int a = 1;
    printIt(a); // non-const l-value
    const int b = 2;
    printIt(b); // const l-value
    printIt(3); // literal r-value
    printIt(2+b); // expression r-value
    return 0;
}

Les impressions ci-dessus
1234

Pour éviter de faire des copies inutiles et potentiellement coûteuses, les variables qui ne sont ni des pointeurs ni des types de données fondamentaux (int, double, etc.) doivent généralement être passées par référence (const). Les types de données fondamentaux doivent être passés par valeur, sauf si la fonction doit les modifier.

Règle: Transmettez des variables de type de données non-pointeur et non fondamental (telles que structs) par référence (const).
 
Top