4 votes

Pourquoi cette conversion ?

#include<iostream>

using namespace std;

class test
{
  int a, b;
public:

  test() {
    a=4; b=5;
  }

  test(int i,int j=0) {
    a=i; b=j;
  }

  test operator +(test c) {
     test temp;
     temp.a=a+c.a;
     temp.b=b+c.b;
     return temp;
  }

  void print() {
    cout << a << b;
  }
};

int main() {
  test t1, t2(2,3), t3;
  t3 = t1+2;
  t3.print();
  return 0;
}

Comment le compilateur peut-il accepter une déclaration comme t3=t1+2; donde 2 n'est pas un objet ?

0voto

Nicola Musatti Points 10070

Parce que votre constructeur test(int i,int j=0) introduit une conversion définie par l'utilisateur de int a test .

0voto

RedX Points 7449

Le compilateur crée un objet de type Test en utilisant son constructeur.

 t3 = t1 + test(2);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X