C++ start! overloading, default값, const!

소개

Unmanaged언어 중 하나쯤은 숙지하고 있어야 한다는 생각에 배우게 되었다. 윤성우 저자님의 교재를 사용할 것이다. 사실 학교다닐 때 한번 훑어본적 있지만 다 까먹어서 처음부터 다시 공부하는거….. 일단은 천천히 문법부터…

모든 언어가 그렇듯 문법은 서로 엇비슷한것 같다. 그래서 포스트할 내용들은 C++에서 특별히 사용되는, C++에서만 혀용되는 그런 내용들만 올릴 계획이다.


C++은 별도의 포멧 지정이 필요 없다.

int var;  
std::cout<<var;  
std::cin>>var;  

C에서는 printf("%d", var); 같이 썼지만 C++에선 포멧 지정을 해줄 필요가 없다. 배열도 마찬가지


오버로딩

void MyFunc(void)
{
  std::cout<<"MyFunc(void)"<<std::endl;
}
void MyFunc(char c)
{
  std::cout<<"MyFunc(char c)"<<std::endl;
}
int main()
{
  MyFunc();
  MyFunc('A');
  return 0;
}

C에선 함수이름이 같으면 오류가 발생하지만 C++은 허용, C++에선 허용, 인자의 개수와 자료형만 다르면OK.


함수 매개변수의 디폴트값 지정

int MyFunc(int num=7);
int main()
{
  ...
}
int MyFunc(int num)
{
  ...
}

선언부에 함수 선언과 동시에 매개변수 초기화를 할 수 있다.

int MyFunc1(int a=1, int b=2, int c=3)
int MyFunc2(int a, int b=2, int c=3)

위처럼도 가능, 하지만 아래는 불가능

int MyFunc3(int a=1, int b=2, int c)

만약 함수 호출을 MyFunc3(1) 같이 하면 a와 b는 초기화 되지만 c는 초기화 되지 않기 떄문에 오류가 발생하게 될 것. MyFunc3처럼은 사용 못한다.


키워드 Const의 의미

const는 다음과 같이 여러 방법으로 쓰일 수 있다.

const int num=10;
//흔히 쓰이는 변수를 상수화

const int* ptr1=&val1;
//포인터 ptr1을 사용해서 가리키는 주소를 변경 가능.
//ptr1=ptr1+1 은 되지만 *ptr1=*ptr+1 은 안됨

int* const ptr2=&val2;
//포인터가 상수화되어 주소변경이 불가능. 주소안의 데이터는 변경 가능
//*ptr1=*ptr1+1 은 되지만 ptr1=ptr1+1 은 안됨

const int* const ptr3=&val3;
//위에 두개를 합친 방법. 둘다 변경이 안됨.

int SimpleFunc(int num) const;
//SimpleFunc안에선 모든 변수값 변경이 허용 안됨

int SimpleFunc(const int num);
//SimpleFunc안에선 변수num값만 변경이 허용 안됨

const는 문법보단 어떻게 사용하는지가 더 중요한듯. 안정성이 좋아짐.

태그: ,

카테고리:

업데이트: