'개발/C++ 문법'에 해당되는 글 5건

  1. 2012.08.07 이름공간(namespace)
  2. 2012.08.07 인라인 함수
  3. 2012.08.06 매개변수의 디폴트 값
  4. 2012.08.06 함수 오버로딩
  5. 2012.08.06 입출력 처리

이름공간(namespace)

개발/C++ 문법 2012. 8. 7. 14:21

1. 이름공간의 등장배경

A사 라이브러리 (func)B사 라이브러리 (func), C사 라이브러리 (func) 를 가져와 프로젝트를 할 때 func 를 호출하면 

당연 충돌이 일어난다. 이러한 충돌을 막기위해 이름공간을 사용한다.




2. 이름공간 기반의 함수 선언과 정의의 구분



위에 이름공간 안에 함수선언시, 아래에 보면 함수정의하는 곳에 이름공간도 같이 적어주고 정의 시작 ! 



3. 이름공간의 중첩

나눠서 이름공간 지정 가능




4. std::cout, std::cin, std::endl

그럼 입출력에 관련된 std::cout, std::cin, std::endl 표현도

namespace std{

cout ...

cin ...

endl ...

}

이런 식 ! 이라는 것을 알 수 있다.


5. using을 이용한 이름공간의 명시





6. 이름공간의 별칭 지정

namespace ABC=AAA::BBB::CCC; 하면, AAA::BBB::CCC::num1=20;을 ABC::num1=20으로 표현가능




7. 범위지정 연산자의 또 다른 기능

전역변수는 이름이 없는 이름을 가지는 이름공간에 있다라고 볼 수 있다.




'개발 > C++ 문법' 카테고리의 다른 글

인라인 함수  (0) 2012.08.07
매개변수의 디폴트 값  (0) 2012.08.06
함수 오버로딩  (0) 2012.08.06
입출력 처리  (0) 2012.08.06
:

인라인 함수

개발/C++ 문법 2012. 8. 7. 12:16

inline 함수 !? : '프로그램 코드라인 안으로 들어가 버린 함수'


1. 매크로 함수의 장점

"일반적인 함수에 비해서 실행속도의 이점이 있다."(스택할당 해제 없음)

* 단점 : 복잡한 함수를 정의하는데 한계가 있다. , 디버깅이 어렵다.

* 특징 : 전처리리가 처리

예시 )

#include <iostream>

#define SQUARE (X) ((X)*(X))

int main(void){

std::cout::<<SQUARE(5)<<std::endl; // => std::cout<<((5)*(5))<<std::endl; 로 변환

return 0;

}

결국 매크로 함수는 정의하기가 복잡하니 ! -> 일반 함수처럼 정의가 가능하면 좋겠다 ! ==>> C++ 기반의 인라인 함수 정의


2. C++ 기반의 인라인 함수 정의

특징 : 컴파일러가 처리해줘 (디버깅이 쉬워진다.)




3. 매크로 함수에는 있지만, 인라인 함수에는 없는 장점


inline int SQUARE(int x) {return x*x} 라고 사용할 시, std::cout<<SQUARE(3.15)시 데이터 손실이 일

어난다. ==>> C++의 템플릿이라는 것을  사용


'개발 > C++ 문법' 카테고리의 다른 글

이름공간(namespace)  (0) 2012.08.07
매개변수의 디폴트 값  (0) 2012.08.06
함수 오버로딩  (0) 2012.08.06
입출력 처리  (0) 2012.08.06
:

매개변수의 디폴트 값

개발/C++ 문법 2012. 8. 6. 12:49

1. 매개변수에 설정하는 '디폴트 값'의 의미

int MyFunc(int num=10) 선언하는데, 이렇게 선언하는게 매개변수의 디폴트를 지정한다는 의미이다.

위와 같이 선언한다면, MyFunc(10); MyFunc(); 처럼 호출한다면 같은 의미가 되는 것이다.

* 부분적으로도 가능

int MyFunc(int num1=1, int num2=2) 선언하고, MyFunc(3) 호출시, MyFunc(3,2)로 호출된다.

* 주의 : 부분적 디폴트 값 설정시 반드시 오른쪽부터 채울 것을 요구, 함수에 전달되는 인자가 왼쪽에서부터 오른쪽으로 채워지기 때문입니다.

 ex ) int YourFunc(int num1=10, int num2, int num3){....} (X)

 int YourFunc(int num1, int num2, int num3=10){.....} (O)



2. 디폴트 값은 함수의 선언 부분에만 표현하면 된다.




'개발 > C++ 문법' 카테고리의 다른 글

이름공간(namespace)  (0) 2012.08.07
인라인 함수  (0) 2012.08.07
함수 오버로딩  (0) 2012.08.06
입출력 처리  (0) 2012.08.06
:

함수 오버로딩

개발/C++ 문법 2012. 8. 6. 12:23

C언어에서는

 int Myfunc(){........}

 int Myfunc(int num){...........}

 로 함수 정의시, Main에서 Myfunc(5);로 함수 호출하면, 함수 정의된 곳을 함수 이름만을 가지고 찾아가기 때문에, 어느 함수로 찾아가야할지 몰라 오류가 나게된다.


그런디, C++언어에스는 위와 같이 정의하고, 호출 했을시, 함수 이름(Myfunc)과 인자정보(5)를 가지고 해당 함수를 찾아가기 때문에, int Myfunc(int num)으로 정의된 함수로 제대로 찾아갈 수 있다.



'개발 > C++ 문법' 카테고리의 다른 글

이름공간(namespace)  (0) 2012.08.07
인라인 함수  (0) 2012.08.07
매개변수의 디폴트 값  (0) 2012.08.06
입출력 처리  (0) 2012.08.06
:

입출력 처리

개발/C++ 문법 2012. 8. 6. 12:10






'개발 > C++ 문법' 카테고리의 다른 글

이름공간(namespace)  (0) 2012.08.07
인라인 함수  (0) 2012.08.07
매개변수의 디폴트 값  (0) 2012.08.06
함수 오버로딩  (0) 2012.08.06
: