Tutoriel: constants (const) de type

  • genux
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Jan 22, 2010
  • Messages: 106
  • Loc: UK
  • Status: Offline

Message Janvier 29th, 2010, 3:59 am

Introduction



Un const (constant) de type signifie que la variable (s) sont de type constant et ne peuvent pas être modifiées dans l'Etat qui étaient présents. Vous pouvez const_cast à ôter le type const et l'ont fait dans l'exemple de classe.

Constant variables



Il ya quelques endroits que vous pouvez mettre le type const pour une variable.

C Code: [ Select ]
[
int normalValue = 55;
const int constValue = 10;
 
  1. [
  2. int normalValue = 55;
  3. const int constValue = 10;
  4.  


La valeur normale est de 55 ans et peut être modifié, mais la constValue est de 10 et ne peut pas être modifié, il est bon pour une valeur de pi par exemple.

Pointeurs variables constantes



Pointeurs vers des types peut être constante, car ils peuvent pointer vers une variable constante et aussi y at-il souligné la valeur d'une valeur constante de sorte qu'ils pointent toujours à la même variable.

Un pointeur vers une variable int constant, la valeur du pointeur peut être modifié pour pointer vers une autre variable const int.
C Code: [ Select ]
const int * pConst= &constValue;
 
  1. const int * pConst= &constValue;
  2.  


Voici un pointeur vers une variable constante.
C Code: [ Select ]
int * const pConst2 = &normalValue;
 
  1. int * const pConst2 = &normalValue;
  2.  


Voici un pointeur vers un entier const avec une variable constante.
C Code: [ Select ]
const int * const pConstConst = &constValue;
 
  1. const int * const pConstConst = &constValue;
  2.  

Le pointeur de la constante ne peut être modifié et aussi la pConstConst emplacement mémoire qui est pointée par exemple constValue ne peut pas changer non plus.

Fonctions avec des constantes



Les fonctions peuvent aussi avoir des types const attaché à eux, il ya trois endroits différents

C Code: [ Select ]
const int returnValue(const int value3) const
 
  1. const int returnValue(const int value3) const
  2.  


Dans l'ordre des constantes (const) dans la définition de fonction
1. Le const int retour ne peut pas être modifié, vous pouvez modifier la valeur si vous placez le retour dans une autre variable
2. La valeur de paramètre ne peut pas être modifié.
3. Les variables au sein du "cette catégorie" ne peut pas être modifié.

Ci-dessous un exemple de ce qui précède, j'ai inclus les messages d'erreur si vous essayez de compiler le programme lorsque vous violer le type const.

C Code: [ Select ]
#include <iostream>
 
using namespace std;
 
class constTest {
  private :
    int value;
  public:
    constTest() { value = 0;};
   
    int returnIntConst(int passingValue) const;
};
 
// cannot alter any value for the class variables e.g. value in this case.
// of course you could do a const_cast.. which takes off the constant (const) type
int constTest::returnIntConst(int passingValue) const
{
    // cannot alter any value inside the function
    // assignment of data-member ‘constTest::value’ in read-only structure
    // value = 3;
    const_cast<int&> (value) = passingValue; // take off the const type restriction
    return value;
}
 
int returnInt(const int value1)
{
  // cannot alter the parameter value1
  //error: assignment of read-only parameter ‘value1’
  // value1 = value1+ 2;
  return (value1 + 2);
}
 
// returning a constant value, which means that you cannot do anything to the
// returning value, but if you assign that value to another variable you can
const int returnConstInt(int value1)
{
    value1 = value1 + 2;
    return value1;
}
 
int main()
{
    // cannot alter the return value of the returnConstInt
    //  increment of read-only location ‘returnConstInt(3)’
    // int constValue = returnConstInt(3)++;
    int constValue = returnConstInt(3);
    // but you can alter the value of returning int from returnConstInt if passed to a variable
    constValue++;
    cout << constValue << endl;
   
    constTest cTest;
    cout << cTest.returnIntConst(10) << endl;
    return 0;
}
 
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class constTest {
  6.   private :
  7.     int value;
  8.   public:
  9.     constTest() { value = 0;};
  10.    
  11.     int returnIntConst(int passingValue) const;
  12. };
  13.  
  14. // cannot alter any value for the class variables e.g. value in this case.
  15. // of course you could do a const_cast.. which takes off the constant (const) type
  16. int constTest::returnIntConst(int passingValue) const
  17. {
  18.     // cannot alter any value inside the function
  19.     // assignment of data-member ‘constTest::value’ in read-only structure
  20.     // value = 3;
  21.     const_cast<int&> (value) = passingValue; // take off the const type restriction
  22.     return value;
  23. }
  24.  
  25. int returnInt(const int value1)
  26. {
  27.   // cannot alter the parameter value1
  28.   //error: assignment of read-only parameter ‘value1’
  29.   // value1 = value1+ 2;
  30.   return (value1 + 2);
  31. }
  32.  
  33. // returning a constant value, which means that you cannot do anything to the
  34. // returning value, but if you assign that value to another variable you can
  35. const int returnConstInt(int value1)
  36. {
  37.     value1 = value1 + 2;
  38.     return value1;
  39. }
  40.  
  41. int main()
  42. {
  43.     // cannot alter the return value of the returnConstInt
  44.     //  increment of read-only location ‘returnConstInt(3)’
  45.     // int constValue = returnConstInt(3)++;
  46.     int constValue = returnConstInt(3);
  47.     // but you can alter the value of returning int from returnConstInt if passed to a variable
  48.     constValue++;
  49.     cout << constValue << endl;
  50.    
  51.     constTest cTest;
  52.     cout << cTest.returnIntConst(10) << endl;
  53.     return 0;
  54. }
  55.  


et la sortie serait

C Code: [ Select ]
6
10
 
  1. 6
  2. 10
  3.  


Conclusion



La constante (const) de type restreint des variables d'être modifié si vous ne voulez pas qu'elles soient, permet d'économiser sur les éventuels problèmes si vous essayez de modifier une variable qui doit être la même, p.ex. PI .. il ne devrait pas modifier de 3,142 à 5.


Je n'aime vraiment à tout commentaire concernant toute tutorial / poste, répondez simplement ou PM me .. heureux de vous aider, à mieux partager leurs connaissances.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Janvier 29th, 2010, 3:59 am

Afficher de l'information

  • Total des messages de ce sujet: 1 message
  • Modérateur: Tutorial Writers
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC