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キーを追加するだけです.
関連コード:
#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;
}