C++クラスのconstの使い方

2043 ワード

クラスのconstには基本的に3つの使い方があります
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タイプメンバー関数を呼び出すこともできます.