C++ study(6)

김혜원·2023년 1월 26일
0

c++study

목록 보기
6/11

함수에서 const 사용

  • 매개변수 리스트 안에 있는 const
    어떤 매개변수를 const로 만드는 것.
    const형 변수 선언을 함수의 매개변수에 하는 것과 같다.

#include <iostream>
using namespace std;

void func(const int);

int main(){

func(10);

return 0;
}

void func(const int n){
for(int i=1; i<=n; i++)
cout << i << endl;
}

func() 함수의 매개변수 n을 const로 받으면 함수 내용 안에 n값을 수정할 수 없게 된다!

  • const가 붙은 멤버 함수

<coord.h>

#include <iostream>
using namespace std;

class Coord{
private:
int x, y;
public:
Coord();
Coord(int, int);
void setX(int);
void setY(int);
int getX()const;
int getY()const;
void print()const;
};

<coord.cpp>

#include "Coord.h"

Coord::Coord():x(0),y(0){
}

Coord::Coord(int x1, int y1):x(x1),y(y1){
}

void Coord::setX(int x1){
x = x1;
}

void Coord::setY(int y1){
y = y1;
}

int Coord::getX()const{
return x;
}

int Coord::getY()const{
return y;
}

void Coord::print()const{
cout << "(" << x << ", " << y << ")" << endl;
}

const키워드를 저곳에 붙이면, 이 함수는 멤버 변수의 값을 수정하지 않는다뜻!
실제로 저런 함수에서는 멤버 변수의 값을 수정할 수 없다. -> const형 object에서는 저런 함수들을 부를 수 있어서 필요한 것이다!!

#include <iostream>
#include "Coord.h"
using namespace std;

const Coord add(const Coord, const Coord);

int main(){

Coord A(2, 3);
Coord B(-1, 0);
A.print();
B.print();
(add(A, B)).print();

return 0;
}

const Coord add(const Coord P, const Coord Q){
int x1 = P.getX() + Q.getX();
int y1 = P.getY() + Q.getY();
Coord temp(x1, y1);
return temp;
}

매개변수, 반환형이 const인 경우에도 const키워드를 넣어준 함수를 부를 수 있게 되었다!
const 처리된 object에서 setX() 같은 함수는 부를 수 없다..

정리하면,

  1. const처리된 멤버 함수 안에서 역시 자신의 멤버 함수를 부르는 데 제한이 생긴다.
  2. 설령 내용 중 멤버 변수값을 바꾸는 것이 없어도, const처리하지 않으면 const형 object를 부를 수 없다.
  • reference형 매개변수
    const형 포인터와 마찬가지로 const형 reference도 존재하는데, 이들은 자신이 가리키는 곳의 값을 바꾸지 못한다.

0개의 댓글