'c++'에 해당되는 글 1건

1장정리

C++프로그래밍/C++ 2007. 7. 12. 09:49

1. C++입 출력방식

<iostream.h>방식
cout<<출력대상1<<출력대상2 ;
cin>>입력대상1>>입력대상2 ;

endl; 개행및 출력버퍼 비워줌

<iostream>방식
std::cout<<출력대상1<<출력대상2 ;
std::cin>>입력대상1<<입력대상2 ;

std::endl;

같으나 새로개정된ANSI표준  앞에std::를 붙여주거나
using std::cout;
using std::cin;
using std::endl;
로 정의 가능
using namespace std::로도 한번에 정의 가능하나 나중에 이름충돌가능성있음

2. 함수 오버로딩
C++에서는 함수 오버로딩이 지원됨.
즉, 함수의 이름이 같아도 컴파일러가 알아서 판단.
하지만 매개변수의 개수 및 타입이 달라야함.
리턴 타입만 다르고 함수이름 및 매개변수가 같을경우에도 적용이 안됨.

3. 디폴트 매개변수
int function(int a=0)
{
   return a*7;
}
에서와 같이 함수 매개변수 부분에 디폴트 매개변수사용 가능.
매개변수가 없을경우 0을 디폴트 값으로 설정해줌
매개변수값이 있을경우에는 그값을 설정.

주의할점

int function()
{
  return 10;
}
int function (int a=10)
{
  return a+1;
}
int main()
{
  std::cout<<function()<<std::endl;
  return 0;
}

이럴경우 함수 2개가 동시에 호출이 되기때문에 주의해야함
함수오버로딩과 디폴트 매개변수를 동시에 잘못정의.

4. inline 함수
C언어의 매크로와 같은 기능을 가진 함수
다만 매크로는 전처리기에 의해 처리가 되고
inline함수는 컴파일러에 의해 처리가 됨.
inline함수는 컴퓨터가 판단하여 성능향상에 해가된다고 판단될 경우
그냥 무시해버리기도한다.
함수이름앞에 그냥 inline 키워드를 붙여주기만 하면됨.

5. namespace
이름 공간이 다르면 같은 변수나 함수의 선언이 허용된다.
예를 들어

#include <iostream>

namespace A_COM
{
 void function(void)
 {
  std::cout<<"A.COM에서 정의한 함수"<<std::endl;
 }
}

namespace B_COM
{
 void function(void)
 {
  std::cout<<"B.COM에서 정의한 함수"<<std::endl;
 }
}

int main()
{
 A_COM::function();
 B_COM::function();
 return 0;
}

이런 식으로 가능(이건 이렇게 예제로 밖에 설명할수가 없군 -_-;)

cout,cin,endl 도 std라는 네임스페이스 안에서 정의된 것들.

6. using
1번에서 설명
return 1; ㅋㅋㅋ

7. ::  범위지정 연산자
전역변수에 접근하기 위해서도 사용됨

#include <iostream>

int val;

int main()
{
  int val=10;
  ::val+=1;
  return 0;
}


 

#include <iostream> //구버젼은 <iostream.h>

//usiong namespace std;  가능
using std::cout;
using std::endl;

//네임스페이스 생성
namespace JS
{
 int function(int a,int b,int c)
 {
  std::cout<<"네임스페이스function(int a,b,c)"<<std::endl;
  return 0;
 }
}
//using
using JS::function;


//함수오버로딩
int function(int a=0)// 디폴트매개변수선언 : 매개변수에 전달되는값이 없으면 0 으로 초기화
{
 std::cout<<"function(int a)"<<std::endl;
 return 0;
}

int function(int a, int b)
{
 cout<<"function(int a,int b)"<<endl;
 return 0;
}
//inline 함수 : 매크로와 달리 컴파일러에 의해 처리되기때문에 최적화가 용이
inline int SQUARE(int x)
{
 return x*x;
}

int main()
{
 JS::function(1,2,3);//JS네임스페이스의 함수 호출
 function(1,2,3);
 function(1);
 function(1,2);

 return 0;
}

블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,