지역변수
지역안에서 선언된 변수
범위 Scope
- 어디까지 적용되는가?
지속기간 Duration
- 메모리에 언제까지 적재되는가?
{}으로 지역을 구분한다.
{}블록안에서 선언된 변수는 {}블록에서만 사용가능하다.
같은 블록안에서는 같은이름으로 변수를 선언하면 에러가 난다.
하지만 {{}}내부블록 안에서는 같은이름의 변수가 선언이 가능하다.
내부블록에서는 밖에 선언된 같은이름의 함수는 숨기고
내부블록안에 선언된 변수를 사용한다.
함수도 같은 이름은 불가능 하다.
하지만 파라미터가 다르다면 다른 함수로 볼 수 있다.
같은 이름의 함수를 사용하지 않는것이 좋지만
만약에 사용할려면 namespace를 사용해 사용한다.
namespace안에 namespace를 선언할 수 있다.
변수는 가급적 사용하는곳에서만 살아남게 선언한다.
객체지향프로그래밍의 기본적인 철학이다.
동적할당에선 범위,지속기간이 분리된다.
#include <iostream>
using namespace std;
//만약에 같은이름의 변수와,함수를 사용하고 싶다면
//namespace를 사용한다.
namespace work1
{
int a = 0;
void getTest() {
a += 1;
cout << "work1::getTest() : " << a << endl;
}
}
int a = 0;
void getTest() {
a += 2;
cout << "getTest() : " << a << endl;
}
int main()
{
//apple변수를 선언해서 사용할 수 있게 된다.
//OS로 부터 int메모리를 할당 받는다.
//int main(){}안에서 사용가능 하다.
int apple = 5;
cout << apple << endl;
if(true)
{
//{}밖에서 선언된 변수는 안 {}에서도 사용가능 하다.
//apple변수가 위에 되어있기에 사용할 수 있다.
//apple = 1;
//cout << apple << endl;
//같은이름으로 변수 선언이 가능하다.
//내부 {} 안에서만 적용된다.
//외부에 있는 apple은 같은 이름이 선언될 경우 숨긴다.
//가급적이면 이름을 다르게 정하는것이 좋다.
int apple = 1;
cout << apple << endl;
getTest();
work1::getTest();
}
cout << apple << endl;
return 0;
}
'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글
c++ using,auto 키워드 란? (0) | 2019.07.05 |
---|---|
c++ 전역변수,정적변수,내부연결,외부연결 (0) | 2019.07.05 |
c++ 비트단위연산자,비트플래그란? (0) | 2019.07.04 |
c++ 연산자종류 (0) | 2019.07.03 |
c++ 문자형,리터럴상수,심볼릭상수 란? (0) | 2019.07.01 |