일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 코린이공부중....
- class c++
- 윤성우 열혈 c++
- C++
- enum c++
- 코딩공부
- inline사용법
- 기술 면접
- 값에 의한 호출
- 분리집합
- class
- 참조에 의한 호출
- namespace c++
- C++ 이름공간
- topolgy algorithm
- inline c++
- 4195
- 백준 분리집합
- 선수과목
- 백준 14567
- enum enumclass
- this포인터
- 2252 c++
- disjoint set #분리집합 # 분리집합 c++ #상호배타적집합 #알고리즘공부 #c++
- c struct 란
- inline 함수
- 선택정렬#알고리즘#C++#알고리즘 공부
- 백준
- enum class
- 백준#1976#dfs#bfs#그래프탐색#그래프#알고리즘#코딩#여행가자#백준여행가자
- Today
- Total
조던을좋아하는코린이
열혈 C++ const 본문
const 객체지향 시간에 변경할 수없다 라는것으로 기억하고 있었다.
열혈 책을 보면서 c언어에서 배운 내용을 잊지말고 기억하자는 의미로 chapter2에서 Const와 관련되 문제가 존재.
그렇다면
What is the const!! in C++
*consts
: 상수화로 위치에 따라 의미가 달라진다.
1. const int a =2;
2. int const a = 2;
1번과 2번은 같은 의미를 의미한다. a는 변할 수없는 상수가 된것 그래서 다음 코드에서
a=3;
과 같은 코드를 입력하면 컴파일 오류가 발생한다.
const 변수는 반드시 선언시 초기화가 되어야한다. 안그러면 오류 발생한다.
3.따라서 class 에서도 반드시 초기화가 필요
class park{
const int a;
add( )
: a(2) { ---> 이 부분아 const int a 를 2로 초기화 해주는것
}
};
class park{
const int a;
add(){
a=2; ---> 이 부분은 a =2의 의미여서 오류가 발생.
}
};
4. const 포인터 변수
(1)
int a = 1;
const int* ptr = &a; ---> *ptr 을 상수화 포인터 변수가 가리키는 값에 대하여 상수화
*ptr = 2; ---> 오류가 발생
a = 2; ---> Int 로 선언되었기에 Ok
(2)
int a = 1;
int b = 2;
int * const ptr = & a; ---> 포인터 변수 자체를 상수화 , 즉 가리키는 주소를 바꿀 수 없다.
ptr = &b; ---> 불가.
(1) + (2)
int a = 1;
const int* const ptr = &a;
+++ 추가 +++
const 멤버함수.
int not_allow() const ; ---> Error
class park
{
int a = 1;
int allow() const
{
int b = 1;
b++; ---> 지역 변수
a++; ---> Error
return a;
}
};
const 함수는 해당함수 내에서 모든 멤버 변수를 상수화 시킨다.
그렇기 때문에 함수 내에서 선언된 b는 내부에서 변형이 가능하지만 함수 밖에 선언된 a는 불가능하다.
*Memory space
Data
Stack
Heap
Malloc & free
(1) Data : 전역변수가 저장되는 영역
(2) Stack : 지역변수 및 매개변수가 저장되는 영역
(3) Heap : 프로그램이 실행되느 ㄴ과정에서 동적으로 할당이 이뤄지는 영역, 쉽게 동정할당이 이루어지는 역역이라 생각하면 된다.
(3)Malloc & free : malloc 함수 호출에 의해 할당된 메모리공간은 free 함수 호출을 통해서 소명하지 않으면 해제되지 않는다.
*Call by value & Call by reference.