const
const 는 상수라는 뜻 이다.
상수라는것은 프로그램이 시작되면서 끝날때 까지 절대 변하지 않는 값을 의미한다.
하지만 진정한 의미로서의 const 는 define 매크로이며, const 키워드를 이용해 만든 변수는 상수 이지만,
'저장공간'을 갖고 있는 변수 이며 실질적으로 프로그램 내부에 박혀있는 값은 아니다.
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#define myvalue 100
int main() {
int value = myvalue;
printf("%d", value);
return 0;
}
const는 원래 define에 있던 것이다.
define에 인해서 100으로 치환되서 프로그램이 시작할때, 끝날때 절대로 변하지 않는다.
const 사용 예시 코드
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#define myvalue 100
class person {
public:
const int age;
person() : age(10){
}
};
int main() {
person* p = new person();
printf("%d", p->age);
return 0;
}
이게 무엇이냐 하면, 10은 시작이든 끝이든 절대 변하지 않는데,
class person {
public:
const int age;
person(int n) : age(n){
}
};
이렇게 하면 age안에 n이 들어간건데, n의 값은 모른다.
input을 받을 수 있다.
프로그램에 박혀있는 변수가 아니라, const변수라는 놈이 생성이 되면 변수 공간을 가지고 있지만 강제적으로 바꿀 수 없다. 라는 뜻이다.
static
static 이라는 것은 '정적' 이라는 뜻 이다.
정적인 어떤가 라는 뜻 이며, 유일하고 독립적인 어떤 것을 의미 한다.
이 static은 class 내부에 존재할 경우 class 내부에서 유일하고 독립적인 멤버 라는 뜻이 되며,
class 외부에 존재할 경우 obj파일(오브젝트 파일)내부에서 유일 하고 독립적인 존재 라는 뜻이 된다.
(글로벌 이라는 뜻이 아니다 절대로, 그렇게 생각하면 안된다.)
이런 클래스가 있다고 하자.
class myclass {
public:
void foo() {
}
static void goo() {
}
};
static의 반대는 dynamic 인데, 동적이란 뜻이다.
void foo는 dynamic이고
static void goo는 static이다.
dynamic의 특징은 자기 인스턴스가 있다는 것이다.
foo를 출력하기 위해선 클래스를 만들어야 한다.
int main() {
myclass* c = new myclass();
c->foo();
return 0;
}
goo를 출력을 하려면 c->goo();를 해도 되지만 다르게 해도 된다.
int main() {
myclass* c = new myclass();
c->foo();
myclass::goo();
return 0;
}
이런 방법도 있다.
c->goo();도 되지만 사파의 방법이다.
myclass::goo();는 명문 정파 느낌이다.
this라는 키워드도 있는데, static은 goo를 호출한 함수의 주체가 없기 때문에 this 사용이 불가능하다.
둘 다 함수 몸체를 만들때는 void만 붙인다.
헤더 코드
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cstring>
class myclass {
public:
static int b;
int a;
void foo();
static void goo();
};
소스 코드
#include "mainHeader.h"
int main() {
myclass* c = new myclass();
c->foo();
myclass::goo();
return 0;
}
void myclass::foo() {
}
void myclass::goo() {
}
extern
erxtrn 키워드는 '외부에 존재한다' 라는 뜻 이다.
어떻게 보면 C/C++ 에서는 obj 파일로 링크가 되면서 만들어지는 진정한 전역 변수를 만들어줄 수 있는 키워드라고 볼 수 있다.
이 extern 키워드의 활용과 뜻은 굉장히 많지만 초보적인 내용 에서는 '전역변수'를 만들어 준다.
이정도로만 이해해도 충분하다.
'C언어 공부' 카테고리의 다른 글
C++ 심화 - 6 기본 자료구조 / STL 기초 자료구조 활용 (0) | 2025.03.20 |
---|---|
C++ 심화 - 5 STL 핵심 / Generic 이라고 불릴 수 있는 개념 (0) | 2025.03.20 |
C++ 심화 - 3 문자열과 네임스페이스 그리고 레퍼런스 타입 (0) | 2025.03.20 |
C++ 심화 - 2 프로그램의 실행구조 / Bitwise / 순수 가상함수 (0) | 2025.03.19 |
C++ 심화 - 1 여러개의 헤더와 소스 (0) | 2025.03.17 |