Questionnaire


Considérons la fonction pour les questions ci-dessous.

int f(int a, int& b, const int& c, int&& d, int* e) 
{ 
    return *(new int{a+b+c+d+*e});
}

Pour chacune des expressions suivantes, indiquez s’il s’agit d’une L-value ou d’une R-value:

  • a,
  • b,
  • c,
  • d,
  • e,
  • *e,
  • a+b+c+d+*e,
  • new int{a+b+c+d+*e};
  • *(new int{a+b+c+d+*e});

Les questions ci-dessous s’appliquent à la classe SomeClass ci-dessous.

class SomeClass {
private:
    int _id;
    std::vector<int> _data;
    std::string* _ptr;
public:
    ~SomeClass() {delete _ptr;}
};


Voici deux implémentations de la fonction main. On suppose que la classe SomeOtherClass est implémentée pour qu’il compile.

int main() {
    SomeOtherClass a;
    SomeOtherClass b;
    b = a;
}

int main() {
    SomeOtherClass a;
    SomeOtherClass b = a;
}