본문 바로가기
Programming/C/C++

C++ 기초 [2]

by bbolmin 2013. 2. 26.

 

[ 함수 오버로딩 ]

 

C의 경우는 호출한 함수를 찾을 때 "함수의 이름"을 사용하지만 C++의 경우에는 "함수의 이름"과 "매개 변수"를 사용한다.

따라서 함수 이름이 같더라도 "매개 변수"를 이용하여 함수를 구별할 수 있게 된다.

 

이 특성을 이용해서 매개변수의 개수, 자료형를 다르게 하여 동일한 이름의 함수를 정의하는 것을 C++의 함수 오버로딩(Fuction Overloading)이라고 한다. (반환형은 오버로딩과 무관)

 

ex)

 

void test(int a){

...

}

void test(char a){

...

}

void test(char a, char b){

...

}

 

 

 

[ 인라인 함수 ]

 

#define test(a) ((a)*(a))

C에서 위와 같이 매크로 함수를 정의하여 사용하면 전처리기에 의해 호출 부분이 함수의 몸체로 대체된다.

C++에는 위의 기능을 일반 함수처럼 정의할 수 있는 inline 함수가 있다. 일반 함수 정의 맨 앞에 inline 키워드를 붙여주면 된다.

(인라인은 컴파일러가 처리)

 

 

ex)

 

inline int test(int a){

return a*a;

}

 

 

 

[ 클래스 ]

 

struct로 정의한 구조체는 별도의 접근제어 지시자가 없는 경우 public으로 선언된다.

class로 정의한 클래스는 별로의 접근제어 지시자가 없는 경우 private으로 선언된다.

 

객체지향 프로그래밍은 현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 있는 그대로 실체화시키는 형태의 프로그래밍이다.

객체를 이루는 것은 데이터와 기능이다.

 

 

 

[ namespace 별칭 지정 ]

 

namespace AAA{

namespace BBB{

int test;

}

}

 

namespace AB=AAA::BBB;

 

위와 같은 선언으로 AAA::BBB::test 대신 AB::test로 별칭 지정가능.

 

 

 

 

[ 범위지정 연산자 ::로 전역 변수 접근 ]

 

int test=11;

 

void main()

{

int test = 0;

test;  // <- 지역변수 test를 가리킨다.

::test; // <- 전역변수 test를 가리킨다.

 

}

 

 

 

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

복사 생성자  (0) 2013.02.27
C++ 기초 [3]  (0) 2013.02.27
C++ 기초 [1]  (0) 2013.02.26
Unix 입출력 [ read/write - recv/send ]  (0) 2012.11.30
함수 포인터 사용  (0) 2012.09.23