C++ : 객체 지향 프로그래밍 언어
C : 절차 지향 프로그래밍 언어. 순서대로 코드를 진행!
객체 란?
C++에는 class가 추가됐다!!
class 역시 자료형의 하나. class형식을 가지고 object가 선언된다.
추가된 구문?
변수의 생성, 초기화를 괄호를 사용해서!
int a = 5;
int a(5);
int a = 3, b=6;
int a(3),b(6);
bool type 변수 사용할 수 있다!
typecasting(형변환) 방법 한 가지 추가!
#include <stdio.h>
int main()
{
double f = 5.5;
int n = static_cast<int>(f);
printf("%f, %d", f, n);
return 0;
}
C++에서는 확장자(h)가 없는 header file들을 주로 사용하게 된다!
C의 pointer(다른 변수, 메모리의 주소값 참조하거나 넘겨준다) 와 비슷한 도구!
reference는 주소값을 가진다
#include <cstdio>
int main()
{
int a = 5;
int &r = a;
printf("%d %d\n", a, r);
printf("%p %p\n", &a, &r);
return 0;
}
reference 변수 선언 : 자료형 &변수명 = 변수
반드시 처음에 초기화해야 한다. 그 이후 자신이 가리키는 변수를 바꿀 수 없다.
어떤 변수에 새로운 이름을 부여한다 고 생각할 수 있다.
#include <cstdio>
void swap(int &, int &);
int main()
{
int x, y;
x = 3;
y = 5;
swap(x, y);
printf("%d %d\n", x, y);
return 0;
}
void swap(int &x, int &y)
{
int tmp;
tmp = x;
x = y;
y = tmp;
}
referenc(기호 &)는 함수의 선언, 정의에서만 쓰고 그 외에서는 기존 변수 다루듯 쓸 수 있다.
namepsace라는 keyword사용해 만든다.
#include <cstdio>
namespace ns
{
int n = 5;
}
int main()
{
int n = 5;
ns::n = 3;
printf("%d %d\n", n,ns::n);
return 0;
}
namespace이름::값 으로 쓴다!
#include <cstdio>
namespace ns
{
int n = 5;
double f = 3.3;
char c = 'C';
}
int main()
{
using namespace ns;
printf("%d %f %c\n", n, f, c);
return 0;
}
using namespace 이름 을 사용해 ns에 있는 모든 것을 ' :: ' 없이 사용가능!
directive라고 한다.
C++에서 새로 지원하는 입출력을 사용하려면 iostream headere file을 불러들인다.
iostream header file 안에 std라는 namespace가 있다!
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "정수 입력:";
cin >> n;
cout << "입력값:" << n << "!" << endl;
return 0;
}
- cout과 <<로 출력
- cin과 >>로 입력 받기
- 여러가지 자료형 결합된 출력 시 자료형 달라질 때마다 << 한번 더 써 구분
- endl은 줄바꿈
string 입출력
#include <iostream>
using namespace std;
int main()
{
string str1, str2, str3;
cout << "문자열 2개 입력:";
cin >> str1 >> str2;
str3 = str1 + str2;
cout << str3 << endl;
return 0;
}
getline(), length(), at()
get(), peek(), putback(), ignore()