Maison >développement back-end >C++ >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.
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; }
Dans le constructeur de la classe définie, procédez comme suit :
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.
#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; }
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.
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!