티스토리 뷰

LANGUAGE/C++

[C++] CONST

진심스테이크 2018. 3. 8. 10:50

 

const

 

#레퍼런스 변수는 한번 참조하면 바꿀 수 없기 때문에 선언과 동시에 초기화를 해야한다

 

const도 레퍼런스와 마찬가지로 선언과 동시에 초기화를 해줘야한다

필드는 문법적으로 초기화를 시키지 못하기 때문에 콜론 초기화를 해준다

 

 

사용 목적

주로 사용자 캡슐화 목적으로 사용

1. Field - 필드

- 선언과 동시에 초기화를 해줘야 하는데 할 수가 없다

- 콜론 초기화 기법을 사용한다

- 깂을 읽기만 가능하다

# 콜론 초기화 : const와 필드 초기화

- this 대신에 사용하는 개념

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

class A {
    const int a;
    int b;
public :
    A():a(10), b(20){ //생성자 먼저 동작 -> a에 10을 먼저 넣음
        //a = 10; //오류 : 초기화가 되어있지 않음
        //b = 20;
    }
    void disp() {
        cout << a << "\t" << b << endl;
    }
};

void main() {
    A aa;
    aa.disp();
}

 

2. Method - 메소드

- 필드 값을 바꾸지 않겠다 -> 함수 내에서 필드 값을 바꾸지 못함

- 필드의 값을 함수에서 읽기만 가능하게 한다 -> 쓰기 금지

 

3. Object - 객체

- 객체 값을 고정해서 쓰겠다 -> 읽기만 가능

- const는 const 끼리만 부를 수 있고, 사용 할 수 있다

- 같은 성질로 우선순위

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

class A {
    const int a;
    int b;
public :
    A():a(10), b(20){ //생성자 먼저 동작 -> a에 10을 먼저 넣음
        //a = 10; //오류 : 초기화가 되어있지 않음
        //b = 20;
    }
    void disp() const{
        //b = 30; //값을 바꾸지 못함
        cout << a << "\t" << b << endl;
    }

    void disp() { //일반이 우선적
        cout << "일반" << endl;
    }
};

void main() {
    A aa;
    aa.disp();
}

 

const 멤버 함수는 많이 쓸수록 안정적이다

 

지역변수는 자유롭게 쓸 수 있다

'LANGUAGE > C++' 카테고리의 다른 글

[C++] 급여관리 프로그램  (0) 2018.03.12
[C++] CLASS RELATIONSHIP - 클래스 관계  (0) 2018.03.08
[C++] STATIC  (0) 2018.03.08
[C++] THIS  (0) 2018.03.08
[C++] CLASS  (0) 2018.03.07
댓글