Maison >développement back-end >C++ >Programme C++ pour convertir un type primitif en objet

Programme C++ pour convertir un type primitif en objet

PHPz
PHPzavant
2023-08-26 19:29:031227parcourir

Programme C++ pour convertir un type primitif en objet

Les types de données primitifs en C++ sont des types de données prédéfinis par le langage lui-même ; comme int, float, double, etc. Les objets sont des instances de classes et C++ est un langage orienté objet, et une conversion entre les types de données primitifs et les objets est nécessaire. Les classes servent de plans architecturaux pour les types de données. Bien que cela ne décrive aucune donnée spécifiquement, il précise ce que signifie le nom de la classe, c'est-à-dire à quoi ressemble un objet de cette classe et quelles opérations peuvent être effectuées dessus.

Dans le compilateur du langage C++, la conversion entre les types de données primitifs en objets n'est pas clairement définie, donc pour convertir les types de données primitifs en objets, le mécanisme doit être défini par le programmeur. La manière dont un type primitif est converti en un objet spécifique est définie dans le constructeur d'une classe définie par l'utilisateur. Prenons un exemple pour mieux comprendre ce problème.

Le problème que nous résolvons est de convertir le poids en grammes en kilogrammes et en grammes. Pour ce faire, nous définissons une classe de poids définie par l'utilisateur avec deux membres entiers kg et gm. "kg" est la valeur en kilogramme du poids donné et "gm" est le poids restant inférieur à un kilogramme à convertir. L'algorithme pour résoudre ce problème est donné ci-dessous.

Grammaire

La syntaxe de conversion est la suivante -

class Myclass{
   private:
   int classVal;
   public:
   MyClass(){
      classVal = 0;
   }
   MyClass(int val) {
      classVal = val;
   }
};
int main() {
   Myclass m;
   int val = <integer value>;
   m = val;
   return 0;
}

Algorithme

  • Mettez les poids d'entrée dans des variables entières.
  • Créez un objet de poids de classe.
  • Attribuer une valeur entière à l'objet de classe ;
  • Appelez la fonction show de l'objet.

Dans le constructeur de la classe définie, procédez comme suit :

  • Divisez la valeur d'entrée par 1 000 pour obtenir la valeur du kilogramme (kg) comme quotient.
  • Divisez la valeur saisie par 1000 pour obtenir le reste en grammes (gm).

Comme mentionné précédemment, tous les mécanismes de conversion doivent être définis au sein du constructeur. Le constructeur doit être paramétré et la valeur source d'origine doit être transmise au constructeur en tant que paramètre. Le code source du problème est le suivant.

Exemple

#include <iostream>
using namespace std;
//converts weight in grams to kgs and grams
class Weight
{
   private:
      int kg, gm;
   public:
   //default constructor
   Weight()
   {
      kg = 0;
      gm = 0;
   }
   //paramaeterized constructor
   Weight(int ip)
   {
      this->kg = ip / 1000;
      this->gm = ip % 1000;
   }
   //shows the output
   void show()
   {
      cout << "The weight is " << this->kg << " kgs and " << this->gm << " grams." << endl;
   }
};
int main()
{
   //weight in grams
      int ip = 1085;
   //conversion done here
      Weight w;
      w = ip;
      w.show();
   return 0;
}

Sortie

The weight is 1 kgs and 85 grams.

Dans l'exemple, l'entrée se trouve à l'intérieur de la fonction principale et est "ip". Il existe également un objet de poids de classe "w". Nous venons d'attribuer une valeur entière à un objet de classe et d'appeler un appel implicite au constructeur paramétré de cet objet. Les fonctions définies dans le constructeur ont été exécutées, et enfin la sortie est affichée en appelant la fonction show.

Conclusion

Dans cet exemple, la conversion d'un type primitif en un objet de classe défini par l'utilisateur se fait à l'aide d'un appel implicite au constructeur. C'est très bien jusqu'à ce que le constructeur ait besoin de plusieurs valeurs primitives pour instancier l'objet. Par conséquent, nous devons appeler explicitement le constructeur, puis transmettre la valeur d'origine en tant que paramètre au constructeur d'objet. L’inverse est vrai pour la conversion d’un objet en type primitif, qui nécessite un processus plus complexe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer