C++クラスのconstの使い方
2043 ワード
クラスのconstには基本的に3つの使い方があります
const int func();//戻り値はconstタイプ
int func(const int);//パラメータはconstタイプ
int func(int )const;//constタイプのメンバー関数で、クラス内のconstタイプの変数しか呼び出せません.
また、クラスのインスタンスがconstタイプである場合、クラス内のconstメンバー関数のみを呼び出すことができ、クラスのメンバー関数のみがconstタイプに修飾される.
cout:
Point constructor is called !
Point constructor is called !
const type
x=30,y=40
not const type
x=10,y=20
Point destructor is called !
Point destructor is called !
Program ended with exit code: 0
クラスの
関数を削除すると、次のように出力されます.
Point constructor is called !
Point constructor is called !
const type
x=30,y=40
const type
x=10,y=20
Point destructor is called !
Point destructor is called !
Program ended with exit code: 0
したがって、クラス内の非constメンバー関数はconstタイプメンバー関数を呼び出すこともできます.
const int func();//戻り値はconstタイプ
int func(const int);//パラメータはconstタイプ
int func(int )const;//constタイプのメンバー関数で、クラス内のconstタイプの変数しか呼び出せません.
また、クラスのインスタンスがconstタイプである場合、クラス内のconstメンバー関数のみを呼び出すことができ、クラスのメンバー関数のみがconstタイプに修飾される.
//Point.h
#include <iostream>
using namespace std;
class Point{
private:
int x,y;
public:
Point(int a,int b){
x=a;y=b;
cout<<"Point constructor is called !
";
};
~Point(){
cout<<"Point destructor is called !
";
}
public:
const int getX(){
return x;
}
const int getY(){
return y;
}
public:
void setX(const int a,int b) {
x=a;y=b;
}
public:
void printPoint() const{
cout<<"const type
";
cout<<"x="<<x<<",y="<<y<<endl;
}
void printPoint(){
cout<<"non const type
";
cout<<"x="<<x<<",y="<<y<<endl;
}
};
//main.cpp
#include <iostream>
#include "Point.h"
int main(int argc, const char * argv[])
{
// insert code here...
Point p(10,20);
Point const p1(30,40);
p1.printPoint();
p.printPoint();
//std::cout << "Hello, World!
";
return 0;
}
cout:
Point constructor is called !
Point constructor is called !
const type
x=30,y=40
not const type
x=10,y=20
Point destructor is called !
Point destructor is called !
Program ended with exit code: 0
クラスの
void printPoint()
関数を削除すると、次のように出力されます.
Point constructor is called !
Point constructor is called !
const type
x=30,y=40
const type
x=10,y=20
Point destructor is called !
Point destructor is called !
Program ended with exit code: 0
したがって、クラス内の非constメンバー関数はconstタイプメンバー関数を呼び出すこともできます.