헤더파일 선언문 #include <iostream>


C++ 언어에서 입출력함수는 iostream 표준 헤더파일안에 선언되어있다. 과거의 표준라이브러리 및 헤더는 .h 확장자를 붙이고, 새로운 표준라이브러리 및 헤더는 확장자를 붙이지 않는다.


출력함수 std :: cout 


std :: cout <<"출력대상"<<변수; // << 연산자를 이용해 둘 이상의 출력대상을 연이어서 출력

std :: cout <<"Hello World!"<<num<<std :: end;  // std :: end 를 이용한 개행


입력함수 std :: cin


std :: cin >>변수1>>변수2;

std :: cin >>num1>>num2; // 변수는 자료형에따라 각각 알아서 입력이 진행된다.


C++의 지역변수선언


C++의 지역변수선언은 함수 내 어디든 삽입 가능하다


for(int i= val1+1;i<val;i++)

result +=i;


배열기반의 문자열 입출력


char name[100];

std :: cin >>name;

std :: cout << "이름은"<<name<<"입니다"<<std :: endl;


함수 오버로딩


함수호출시 전달되는 인자를 통해서 호출하고자 하는 함수의 구분이 가능할때, 매개변수의 선언형태가다르다면 동일한이름의 함수를 오버로딩할수있다.

함수를 오버로딩할때는 매개변수의 자료형 또는 개수가 달라야한다. 반환형이다른것은 의미없다.


매개변수의 디폴트값


int MyFuncOne(int num = 7)

{

return num +1;

}

int MyFuncOne(int num1=5,int num2=7)

{

return num1+num2;

}

int MyFuncThree(int num1, int num2 =1, int num3=2)

{

return num1+num2+num3;

}


MyFuncOne은 함수호출시 인자를 전달하지않으면 7이된것으로 간주하고 

MyFuncTwo는 함수호출시 인자를 전달하지않으면 5,7이 , 하나만전달하면 num1에 전달한값, 7이 전달되게된다.

MyFuncThree 처럼, 디폴트값을 부분적으로 설정할수 있는데 이때 , 매개변수를 비울때는 왼쪽에서부터 비워야한다. //  매개변수가 전달될때 왼쪽에서부터 전달되기때문이다 


인라인 ( inline ) 함수


C언어에서 매크로함수의 장점은 일반적인 함수에 비해서 실행속도의 이점이있다는것이고, 단점은 정의하기가 어렵다는것이다.

이를 보완하기위해 정의하기쉽고 일반적 함수보다 실행속도가 빠른 함수를 C++에서 도입했는데 인라인함수가 그것이다.


inline int SQUARE(int x) // 컴파일러가 함수의 인라인화가 오히려 성능에 해가된다고 판단할경우, inline 키워드를 임의로 빼기도한다.

{

return x*x;

}


하지만 inline 함수에는 매개변수에서 자료형을 선언해야하는단점이있다. 매크로함수는 자료형에 의존하지않는 함수이다.


namespace


namespace안에 선언된 변수와 함수들은 다른 namespace 에 선언된 변수와 함수들과 겹치지않고 독립적이다.


namespace BestCom

{

void SimpleFunc(void)

{

std :: cout <<"BestCom이 정의한 함수"<<std ::endl;

}

}

namespace ProgCom

{

void SimpleFunc(void)

{

std :: cout <<"ProgCom이 정의한함수" <<std :: endl;

}

}

BestCom :: SimpleFunc(); // BestCom 네임스페이스에 선언된 SimpleFunc 호출

ProgCom :: SimpleFunc(); // ProgCom 네임스페이스에 선언된 SimpleFunc 호출


함수 선언후 다른소스코드에서 함수를 정의할때는 밑처럼 정의한다.

void BestCom :: SimpleFunc(void)

{

..

}


이름공간은 중첩이가능하다 


namespace BestCom

{

int num; // 1

namespace ProgCom

{

int num; // 2

}

}

BestCom :: num // 1번 num

BestCom :: ProgCom :: num // 2번 num


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


using std; // std namespace 안의 cout cin endl 등의 연산자를 std :: endl 이아닌 endl 로 사용 가능하다.

using std :: cout; // cout 호출시 std namespace안의 cout 에서 찾으라는 선언

namespace ABC = AAA::BBB::CCC; // AAA네임스페이스안의 BBB네임스페이스안의CCC네임스페이스를 지칭하는 별칭 ABC 선언


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


int val =100;

int main(void)

{

int val =30;

val = 20 // 지역변수 val 의 값 변경

::val =20 // 전역변수 val 의 값 변경

}

전역변수 val 은 지역변수 val 에 가리게되는데 , 범위지정연산자를 사용하면 전역변수 val 에 접근이 가능하다


+ Recent posts