1. C언어 기반의 C++ 1
출처: 윤성우 열혈강의 C++ 예제코드
1.1. printf와 scanf를 대신하는 입출력 방식
- 출력
#include <iostream>
int main(void)
{
int num=20;
std::cout<<"Hello World!"<<std::endl;
std::cout<<"Hello "<<"World!"<<std::endl;
std::cout<<num<<' '<<'A';
std::cout<<' '<<3.14<<std::endl;
return 0;
}
- 출력 및 입력(정수)
#include <iostream>
int main(void)
{
int val1, val2;
int result=0;
std::cout<<"두 개의 숫자입력: ";
std::cin>>val1>>val2;
if(val1<val2)
{
for(int i=val1+1; i<val2; i++)
result+=i;
}
else
{
for(int i=val2+1; i<val1; i++)
result+=i;
}
std::cout<<"두 수 사이의 정수 합: "<<result<<std::endl;
return 0;
}
- 출력 및 입력(문자열)
#include <iostream>
int main(void)
{
char name[100];
char lang[200];
std::cout<<"이름은 무엇입니까? ";
std::cin>>name;
std::cout<<"좋아하는 프로그래밍 언어는 무엇인가요? ";
std::cin>>lang;
std::cout<<"내 이름은 "<<name<<"입니다.\n";
std::cout<<"제일 좋아하는 언어는 "<<lang<<"입니다."<<std::endl;
return 0;
}
1.2. 함수 오버로딩
- 매개변수의 자료형 또는 개수를 다르게하여 오버로딩
#include <iostream>
void MyFunc(void)
{
std::cout<<"MyFunc(void) called"<<std::endl;
}
void MyFunc(char c)
{
std::cout<<"MyFunc(char c) called"<<std::endl;
}
void MyFunc(int a, int b)
{
std::cout<<"MyFunc(int a, int b) called"<<std::endl;
}
int main(void)
{
MyFunc();
MyFunc('A');
MyFunc(12, 13);
return 0;
}
1.3. 매개변수의 디폴트 값
- 함수의 선언부가 없는경우
#include <iostream>
int Adder(int num1=1, int num2=2)
{
return num1+num2;
}
int main(void)
{
std::cout<<Adder()<<std::endl;
std::cout<<Adder(5)<<std::endl;
std::cout<<Adder(3, 5)<<std::endl;
return 0;
}
- 함수의 선언부가 있는경우
#include <iostream>
int Adder(int num1=1, int num2=2);
int main(void)
{
std::cout<<Adder()<<std::endl;
std::cout<<Adder(5)<<std::endl;
std::cout<<Adder(3, 5)<<std::endl;
return 0;
}
int Adder(int num1, int num2)
{
return num1+num2;
}
- 부분적으로 디폴트값을 적용하는 경우(우->좌)
#include <iostream>
int Adder(int num1=1, int num2=2);
int main(void)
{
std::cout<<Adder()<<std::endl;
std::cout<<Adder(5)<<std::endl;
std::cout<<Adder(3, 5)<<std::endl;
return 0;
}
int Adder(int num1, int num2)
{
return num1+num2;
}
1.4. 인라인 함수
#include <iostream>
inline int SQUARE(int x)
{
return x*x;
}
int main(void)
{
std::cout<<SQUARE(5)<<std::endl;
std::cout<<SQUARE(12)<<std::endl;
return 0;
}
1.5. 네임스페이스
- 범위지정 연산자 기본케이스
#include <iostream>
namespace BestComImpl
{
void SimpleFunc(void)
{
std::cout<<"BestCom이 정의한 함수"<<std::endl;
}
}
namespace ProgComImpl
{
void SimpleFunc(void)
{
std::cout<<"ProgCom이 정의한 함수"<<std::endl;
}
}
int main(void)
{
BestComImpl::SimpleFunc();
ProgComImpl::SimpleFunc();
return 0;
}
#include <iostream>
namespace BestComImpl
{
void SimpleFunc(void);
}
namespace ProgComImpl
{
void SimpleFunc(void);
}
int main(void)
{
BestComImpl::SimpleFunc();
ProgComImpl::SimpleFunc();
return 0;
}
void BestComImpl::SimpleFunc(void)
{
std::cout<<"BestCom이 정의한 함수"<<std::endl;
}
void ProgComImpl::SimpleFunc(void)
{
std::cout<<"ProgCom이 정의한 함수"<<std::endl;
}
#include <iostream>
namespace BestComImpl
{
void SimpleFunc(void);
}
namespace BestComImpl
{
void PrettyFunc(void);
}
namespace ProgComImpl
{
void SimpleFunc(void);
}
int main(void)
{
BestComImpl::SimpleFunc();
return 0;
}
void BestComImpl::SimpleFunc(void)
{
std::cout<<"BestCom이 정의한 함수"<<std::endl;
PrettyFunc(); // 동일 이름공간
ProgComImpl::SimpleFunc(); // 다른 이름공간
}
void BestComImpl::PrettyFunc(void)
{
std::cout<<"So Pretty!!"<<std::endl;
}
void ProgComImpl::SimpleFunc(void)
{
std::cout<<"ProgCom이 정의한 함수"<<std::endl;
}
- alias(범위지정 연산자의 depth가 있는경우)
#include <iostream>
using namespace std;
namespace AAA
{
namespace BBB
{
namespace CCC
{
int num1;
int num2;
}
}
}
int main(void)
{
AAA::BBB::CCC::num1=20;
AAA::BBB::CCC::num2=30;
namespace ABC=AAA::BBB::CCC;
cout<<ABC::num1<<endl;
cout<<ABC::num2<<endl;
return 0;
}
- using을 이용한 네임스페이스 명시1
#include <iostream>
namespace Hybrid
{
void HybFunc(void)
{
std::cout<<"So simple function!"<<std::endl;
std::cout<<"In namespace Hybrid!"<<std::endl;
}
}
int main(void)
{
using Hybrid::HybFunc;
HybFunc();
return 0;
}
- using을 이용한 네임스페이스 명시2
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main(void)
{
int num=20;
cout<<"Hello World!"<<endl;
cout<<"Hello "<<"World!"<<endl;
cout<<num<<' '<<'A';
cout<<' '<<3.14<<endl;
return 0;
}
- using을 이용한 네임스페이스 명시3
#include <iostream>
using namespace std;
int main(void)
{
int num=20;
cout<<"Hello World!"<<endl;
cout<<"Hello "<<"World!"<<endl;
cout<<num<<' '<<'A';
cout<<' '<<3.14<<endl;
return 0;
}