constの使い方とその重要性
2966 ワード
constの導入は、コンパイラや他のプログラマー(外部参照者が適切である)に、この値(変数)は変わらないようにすることです.
1、constオブジェクトの定義・
const int sunNumer = 10;//定数定義と初期化
const i;//ERROR
2、constとポインタの結合
char str[] = "test";
const char* p = str;//non-const p, const data
char* const p = str;//const p non-const data
3、const引用
参照は簡単に言えば、バインドされたオブジェクトの別の名前で、同じアドレスを指します.参照オブジェクトに作用するすべての操作は、バインドされたオブジェクトに同期されます.
int temp1 = 1024;
int& retemp1 = temp1;//retemp1 change temp1 change
int& retemp2 = 512;//ERROR:リファレンス定義は、オブジェクトをバインドする必要があります.すなわち、リファレンスの初期化です.
constリファレンス:厳密な用語--constリファレンスはint doubleなどの内蔵オブジェクトであってもconstオブジェクトへのリファレンスを意味します.
const int temp1 = 1024;
const int & contemp1 = temp1;
int & refvalue = temp1;//ERRORはconstオブジェクトのnon-const参照に対してrefvalueの値の変化はtemp 1の変化を引き起こすが、temp 1は定数である
4、constオブジェクトは関数パラメータとして、constの最も威力のある方法である.
・プログラムが入力パラメータの値を変更しようとする場合は、できるだけパラメータをconst変数として定義する.一方,他人が入力値を修正しようとすることを防止し,プログラム効率を向上させる.
##pass by reference to constはpass by valueより良いことを覚えておいてください.
また、参照のみを使用して関数値を返すこともできます(関数が複数の関数を返す可能性がある場合、またはユーザーが関数結果リストをパラメータリストで表示したい場合)
5、constメンバー関数
メンバー関数をconstとして宣言すると、そのメンバー関数がデータ・メンバーを変更しないことを保証し、開発者にどの関数がオブジェクトの内容が可能であるか、できないかを明確に伝えることができます.
constオブジェクトはconstメンバー関数のみを呼び出すことができますが、constメンバー関数はconst以外のオブジェクトから呼び出すことができます.
メンバー関数をconstとして宣言するには、パラメータリストの後にconstキーを追加するだけです.
関連コード:
main.cpp
1、constオブジェクトの定義・
const int sunNumer = 10;//定数定義と初期化
const i;//ERROR
2、constとポインタの結合
char str[] = "test";
const char* p = str;//non-const p, const data
char* const p = str;//const p non-const data
3、const引用
参照は簡単に言えば、バインドされたオブジェクトの別の名前で、同じアドレスを指します.参照オブジェクトに作用するすべての操作は、バインドされたオブジェクトに同期されます.
int temp1 = 1024;
int& retemp1 = temp1;//retemp1 change temp1 change
int& retemp2 = 512;//ERROR:リファレンス定義は、オブジェクトをバインドする必要があります.すなわち、リファレンスの初期化です.
constリファレンス:厳密な用語--constリファレンスはint doubleなどの内蔵オブジェクトであってもconstオブジェクトへのリファレンスを意味します.
const int temp1 = 1024;
const int & contemp1 = temp1;
int & refvalue = temp1;//ERRORはconstオブジェクトのnon-const参照に対してrefvalueの値の変化はtemp 1の変化を引き起こすが、temp 1は定数である
4、constオブジェクトは関数パラメータとして、constの最も威力のある方法である.
・プログラムが入力パラメータの値を変更しようとする場合は、できるだけパラメータをconst変数として定義する.一方,他人が入力値を修正しようとすることを防止し,プログラム効率を向上させる.
##pass by reference to constはpass by valueより良いことを覚えておいてください.
また、参照のみを使用して関数値を返すこともできます(関数が複数の関数を返す可能性がある場合、またはユーザーが関数結果リストをパラメータリストで表示したい場合)
5、constメンバー関数
メンバー関数をconstとして宣言すると、そのメンバー関数がデータ・メンバーを変更しないことを保証し、開発者にどの関数がオブジェクトの内容が可能であるか、できないかを明確に伝えることができます.
constオブジェクトはconstメンバー関数のみを呼び出すことができますが、constメンバー関数はconst以外のオブジェクトから呼び出すことができます.
メンバー関数をconstとして宣言するには、パラメータリストの後にconstキーを追加するだけです.
関連コード:
#pragma once
#include
#include
using namespace std;
class Student
{
public:
Student(void);
~Student(void);
double addScour(const double& sA,const double& sB);
void subScour(const double& sA,const double& sB, double& retScour);
void outInfo() const;//const
void outInfoOne();
private:
int age;
string name;
//const int sumStu =100;//ERROR
//const int okNum;//ERROR /
static const int staConstNum;//
const int constNum;
};
#include "StdAfx.h"
#include "Student.h"
const int Student::staConstNum = 10;
Student::Student(void):constNum(10)
{
}
Student::~Student(void)
{
}
double Student::addScour(const double& sA, const double& sB)
{
//sA += 10;//ERROR
return sA + sB;
}
void Student::subScour(const double& sA,const double& sB, double& retScour){
retScour = sA - sB;
}
void Student::outInfo() const{
//age =10;//ERROR : “age”,
std::cout<
main.cpp
// Testone.cpp : 。
//
#include "stdafx.h"
#include
#include "Student.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
Student newOne;
double scourA = 90;
double scourB = 100;
double sum=0;
sum = newOne.addScour(scourA,scourB);
double sub;
newOne.subScour(scourA,scourB,sub);
cout<>a;
const char* p = "abc";
return 0;
}