본문 바로가기
프로그래밍/c++

c++ 기본 문법 정리2

by -현's- 2012. 2. 16.
반응형

●c언어에서는 배열사이즈를 정의할 때 상수선언을 #define으로 했지만, c++에서는 const로 할 수 있다.
가능한 const를 사용하는게 좋다
ex)
c언어
 #define B 10             
int main(){
   int b[B];
}

c++
 int main(){
    const int B;
    int b[B];
}




●함수의 디폴트 인수 설정 - 거의 매번 같은 값을 가지지만 가끔씩 변경해야할 경우에 사용하면 편리
ex)
프로토 타입에서 설정
double A( int a=1, double b=3.1);

함수 정의에서 설정
 double A( int a=1, int b=3.1){
  ~~
}



●디폴트 인수 설정된 함수 호출
ex)
double area;
area=A();                //아무 것도 없으면 디폴트인수로 된다
area=A(10);             //첫번째 인수부터 채워진다. 첫번째 인수는 10, 두번째 인수는 디폴트 인수로 된다
area=A(10, 3.11);     //첫번째 두번째 인수는 10, 두번째 인수는 3.11이다



●디폴트 인수 설정시 주의점
- 디폴트 인수는 마지막 인수부터 차례로 설정해야함. 첫번째 인수에만 디폴트 설정하면 컴파일 에러 발생
ex)
double A(int a, int b=1);     //(O)
double B(int a=1, int b);     //(X), 컴파일 에러발생



●오버로딩
- 인수의 형이나 개수가 다르고 동일한 이름의 함수를 여러개 정의한것.
단, 반환형의 형만 다른 함수는 오버로딩할 수 없다.




●표준 출력 스트림 - std::cout
ex)
#include <iostream>
int a;
std::cout<<"Hello"<<"World"<<a<<std:endl;



●표준 입력 스트립 - std::cin
ex)
#include <iostream>
int a;
std::cin>>a;




●스코프 연산자('::')
- 로컬 변수와 클로벌 변수의 이름이 같을 경우 함수안에서는 로컬변수가 우선하지만
스코프연산자를 사용하면 글로벌 변수를 우선시킬 수 있다.
스코프연산자 앞에 클래스명을 붙이면 오브젝트 내의 멤버를 우선시킬 수 있다.
ex)
::a
A::a




●namespace(이름공간)
- namespace 내의 변수와 함수를 이용하기 위해서는 ' namespace명::함수명이나변수명이나클래스명'을 기술한다.
매번 'namespace::'라고 기술하는 것이 번거롭기 때문에 'using namespace 이름공간명;"을 기술하면 편하다


●namespace std
- std::cout나 std::cin은 std라는 이름공간에 있기 때문에 'using namespace std;'를 기술하면 그냥 cout, cin써도 된다.



●인라인 함수
- 함수에 'inline' 붙이면 컴파일러는 호출하는 곳으로 함수의 정의를 복사해서 넣는다. 인수를 복사하거나 함수를 호출하는 처리가 생략되므로 실행속가 빨라진다. 그러나 코드가 중복되는 만큼 프로그램의 사이즈는 커지기 때문에 모조건 인라인 함수가 좋은 것은 아니다. 주로 처리 내용이 작은 함수나 호출 횟수가 많은 함수를 인라인으로 하면 좋다.
ex)
inline int A(int a, int b){
   return a+b;
}


반응형

'프로그래밍 > c++' 카테고리의 다른 글

c++ visual c++로 프로젝트 시작하기  (0) 2013.06.11
c++ 폴더안에 있는 헤더파일 include  (0) 2013.05.26
c++ 기본 문법 정리4  (0) 2012.02.17
c++ 기본 문법 정리3  (0) 2012.02.17
c++ 기본 문법 정리1  (0) 2012.02.16

댓글