C++: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
imported>Drake |
imported>Drake |
||
| 30번째 줄: | 30번째 줄: | ||
* ;: 끝에 붙여주는 마침표같은거. 문장의 끝이라고 알려주지 않으면 컴파일러는 문장의 끝인지 모른다. | * ;: 끝에 붙여주는 마침표같은거. 문장의 끝이라고 알려주지 않으면 컴파일러는 문장의 끝인지 모른다. | ||
== C++ 콘솔 입출력 == | == C++ 콘솔 입출력 == | ||
* iostream을 써서 콘솔 입출력을 해보자. | |||
* cout은 ostream class 안에 정의되어 있음. | |||
<source lang="c++"> | |||
// File Name: cout.cpp | |||
#include <iostream> | |||
void main() | |||
{ | |||
int a = 5; | |||
float b = 3.4; | |||
char c = 'a'; | |||
std::cout << a << std::endl; // << 연산자로 정수형 출력 | |||
std::cout << b << std::endl; // << 연산자로 실수형 출력 | |||
std::cout << c << std::endl; // << 연산자로 문자형 출력 | |||
} | |||
</source> | |||
* 연산자 오버로드: << 연산자 하나로 다양한 자료형태를 모두 출력할 수 있도록 ostream 클래스에 << 연산자가 여러번 정의되어 있다. | |||
* std::cout, std::endl: 화면에 출력하기 위한 cout 클래스 앞에 std::가 붙어있는데, 이건 namespace다. iostream에 선언되어 있는 cout은 std라는 namespace 안에 존재한다. | |||
* 귀찮다면 main 함수 앞에 다음과 같은 선언을 해서 조금 덜 귀찮을 수 있다. 별로 추천하지는 않지만. | |||
<source lang="c++"> | |||
using namespace std; | |||
</source> | |||
* 이렇게 선언을 하면 다음과 같이 사용이 가능하다. | |||
<source lang="c++"> | |||
cout << a << endl; | |||
</source> | |||
* 간결한 것도 좋지만, 사실 귀찮아도 명확한게 좋다. | |||
== 구조체, 레퍼런스 변수 == | == 구조체, 레퍼런스 변수 == | ||
2017년 3월 14일 (화) 15:13 판
C++ 학습을 위한 준비
- C와 C++의 차이점: C++은 C에 객체지향 개념을 도입한것. 현재는 STL과 Boost 덕분에 두 언어는 완전히 다르다고 볼 수 있다.
- 절차지향 프로그램: C나 Basic으로 작성하는 프로그램은 함수를 위주로 하는 구조화된 방식이었음. 프로그램의 시작을 주도하는 main()함수의 내용을 순차적으로 수행함. 일반적으로 함수를 중심으로 프로그램을 설계하고 거기에 필요한 데이터를 정의함.
- 객체지향 프로그램: 객체지향 프로그래밍은 프로그램이 일정한 순서에 의해 진행되지 않음. 객체들로 이루어진 프로그램에서 '사건'이 일어나면 그에 따른 처리를 하는 식으로 프로그램이 진행됨. 객체지향 프로그래밍은 프로그램을 작성하기 위해 필요한 오브젝트들을 먼저 생각함. 객체는 결국 클래스 설계가 중점임.
객체지향 프로그래밍의 특징
- Encapsulation: 안의 내용을 몰라도 api문서만 가지고 거의 완성된 프로그램을 다룰수 있다는 느낌을 줌.
- 다형성, 함수 오버로드: 함수나 연산자가 자료구조에 따라 다르게 동작할 수 있음.
- 상속: 특정 객체의 성격을 다른 객체가 상속받을 수 있다. 비슷한 오브젝트를 여러번 재정의할 필요가 없다.
C++ 컴파일러 설치와 사용법
<source lang="bash"> sudo apt-get install g++ </source>
C++ 프로그램 구조 파악하기
- 다들 예상했겠지. 간닷 헬로월드
<source lang="c++"> // Hello World: Defines the entry point for the console application
- iinclude <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
return 0;
} </source>
- main(): 엔트리 포인트는 결국 main()이당
- { }: 뭉탱이. 함수나 반복문이나 조건문같은건 뭉탱이 단위로 실행하게 됨.
- //, /* */: 주석. 컴파일러가 해석 안할 내용. 사람한테만 필요한 내용 적을때 씀.
- #include: 파일을 불러와서 덧붙이라는 내용.
- std::cout: cout은 화면에 출력하는 객체임. 앞에 붙은건 namespace임.
- ;: 끝에 붙여주는 마침표같은거. 문장의 끝이라고 알려주지 않으면 컴파일러는 문장의 끝인지 모른다.
C++ 콘솔 입출력
- iostream을 써서 콘솔 입출력을 해보자.
- cout은 ostream class 안에 정의되어 있음.
<source lang="c++"> // File Name: cout.cpp
- include <iostream>
void main() {
int a = 5; float b = 3.4; char c = 'a'; std::cout << a << std::endl; // << 연산자로 정수형 출력 std::cout << b << std::endl; // << 연산자로 실수형 출력 std::cout << c << std::endl; // << 연산자로 문자형 출력
} </source>
- 연산자 오버로드: << 연산자 하나로 다양한 자료형태를 모두 출력할 수 있도록 ostream 클래스에 << 연산자가 여러번 정의되어 있다.
- std::cout, std::endl: 화면에 출력하기 위한 cout 클래스 앞에 std::가 붙어있는데, 이건 namespace다. iostream에 선언되어 있는 cout은 std라는 namespace 안에 존재한다.
- 귀찮다면 main 함수 앞에 다음과 같은 선언을 해서 조금 덜 귀찮을 수 있다. 별로 추천하지는 않지만.
<source lang="c++"> using namespace std; </source>
- 이렇게 선언을 하면 다음과 같이 사용이 가능하다.
<source lang="c++"> cout << a << endl; </source>
- 간결한 것도 좋지만, 사실 귀찮아도 명확한게 좋다.