헤더파일 선언문 #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 에 접근이 가능하다
'C++언어 > 열혈C++' 카테고리의 다른 글
C++ : Chpater -6 friend , static 그리고 const (1) | 2018.05.16 |
---|---|
C++ : Chapter -5 복사생성자 (0) | 2018.05.10 |
C++ : Chapter -4 클래스 PART2 (0) | 2018.05.02 |
C++ : Chapter -3 클래스 PART1 (0) | 2018.04.26 |
C++ : Chapter -2 참조자와 new&delete (0) | 2018.04.20 |