본 게시글은 C++ 기초 플러스 책을 읽고 제가 필요할때마다 직접 읽어보려고 매우 대충 정리한 글입니다. (진짜 개인공부용 글임) 따라서 다른 분들이 읽으려면 읽기 어려울 수 있음 주의 ㅎㅎ
C++의 역사
C++은 이름만 봐도 알 수 있듯이 C언어에서 파생되어 나온 언어이다 (업그레이드 버전이라고 보면 편할 것 같다)
C언어는 절차적 언어로 (위에서 아래로 코드가 쭉 나열되게 짜는 방식) 크기가 작고 빠르게 실행되는 프로그램을 작성할때는 유리하나, 요즘 사용되는 모든 프로그램들은 하드웨어가 좋아진 만큼 내용이 방대하고 프로그램의 크기도 커져 C언어만으로 구현하기엔 무리가 있어 C에 객체지향을 얹은 언어 C++이 탄생하게 된다.
객체지향 프로그래밍(OOP)은 나중에 다시 배울건데 간단히 말하면 음..... 음..;; 간단히 말하기가 어렵다.. ㅋㅋ;;;
그냥 대충 톱니바퀴 생각하면 될 것 같다. 각각의 톱니바퀴가 돌아가고 서로 맞물려서 하나의 시계가 돌아가게 하는 것 같은 느낌이랄까... 뭐 대충 그렇다.. 대충..ㅎ..
C++의 일반화 프로그래밍
OOP는 데이터 측면을 강조하는 반면에, 일반화 프로그래밍은 알고리즘 측면을 강조한다.
여기서 일반화란 데이터형과 무관한 코드를 작성한다는 것을 말하며, 이를 가능하게 하는 것이 C++ 템플릿이다.
정렬을 하는 함수를 만들고싶다!!! 라고하면 원래라면 각 데이터형마다 함수를 만들어야하는데,
템플릿을 사용하면 특정 데이터형을 지정하지 않기때문에 여러 데이터형에 막 가져다 쓰면된당
이것이 일반화 프로그래밍이며, C++ 템플릿 덕분에 가능하다.
프로그램 작성 요령
소스코드는 반드시 파일로 저장해야 한다.
소스코드가 파일로 저장될 때 C++ 소스 코드라는 것을 나타내기 위해 확장자가 지정되는데
이는 컴파일러마다 상이하다.
우리가 흔히 쓰는 VS(비주얼스튜디오)에서는 .cpp로 저장된다.
대부분의 컴파일러에서는 통합 개발 환경 IDE를 제공한다. IDE를 통해 개발할 프로그램의 종류를 결정할 수 있다.
또한 해당 컴파일러들은 디버깅할 수 있는 기능을 제공한다.
그리고 작성된 코드를 컴파일하게된다.
==============================
#include <iosteam> //전처리 지시자
using namespace std; //using namespace 지시자
int main() //함수 머리
{
cout << "ㅎㅇ" << endl;
return 0; //함수 종료
}
위 코드를 실행하면 ㅎㅇ 가 출력된다.
[정리]
어떤 프로그램이던 main함수 1개가 필요하다
ㄴ 더 많아도 안되고 없어도 안된다
main함수는 프로그램의 시작점이라고 보면 된다.
int main()
int는 함수의 반환형이기 때문에 int로 선언한 함수는 무조건 int값을 return하며 함수를 종료해야한다.
ㄴ 근데 C++표준에서 메인은 예외적으로 안써도 문제없게끔 설정해둬서 메인엔 안써두된다 (근데 쓰는 버릇을 들이는걸 추천)
{ } 내에 있는 내용은 함수 몸체라고 한다 (근데 함수몸체라고 부를 일은 없었던거같다.. ㅋㅋ)
구문 작성 시 끝에 ;를 통해 마무리해야한다
ㄴ 마침표같은거라고 보면 되는데 사실 마침표는 없어도 읽을 수 있지만 이건 없으면 오류나니깐 꼭 쓰자
ㄴ 없으면 안되는데 많은건 상관없다
cout << "메롱" << endl;;;;;;;;;;;;;;;;; 이렇게써두 상관없음
코드 뒷쪽에 // 하고 뭐 메모남겨놓은것처럼 보이는데 진짜 메모가 맞다.
이는 주석이라고 하는데 진짜 메모남길때 많이 쓴다.
엄청 복잡한 기능을 만들면 나중에 다시 봤을때 까먹었을 수도 있고,
타인이랑 같이 작업할 경우 메모를 남겨 무슨 기능인지 설명하는 식으로 자주 쓴다.
//내용 하면 뒷내용은 프로그래밍에 아무런 영향을 주지 않는다.
(왜냐하면 컴파일러에서 컴파일할 때 전처리 단계에서 주석을 지워버린다)
//는 한줄한줄 많이 치고 넓은 범위를 주석치고싶을땐 /* */ 으로 묶으면 된다.
#include <iostream>
#include는 전처리지시자 라고 부르며 iostream이라는 파일의 내용을 코드에 붙여넣어주는 역할을 한다
iostream은 cout cin 같은 입출력 관련 기능들이 정리되어있는 파일이라 가져다쓰는것임
using namespace std;
namespace std 이렇게 쓰면 std라는 공간을 쓸거다 라고 말해둔거라고 보면된다
ㄴ 그냥 간단히 대충대충 써뒀는데, 나중에 다시 알아볼 예정
cout << "어쩌구" << endl;
ㄴ cout은 출력을 하는 객체이고, "어쩌구"를 << 연산자를 통해 저 객체한테 전달하겠단거다
ㄴ << endl은 줄바꿔주는걸 전달하는거고
연산자 오버로딩
사실 <<는 비트연산자인데, 연산자 오버로딩을 통해 같은 기호지만 다른 기능을 하게끔 해서 사용할 수 있다.
ㄴ 그걸 이용해서 다른 의미로 사용중인것임
'프로그래밍 > C++' 카테고리의 다른 글
[정리] C++ 데이터 처리 (0) | 2022.11.30 |
---|---|
메모리 구조 (0) | 2022.11.22 |
컴파일(Compile) (0) | 2022.11.19 |
[C++] STL map 컨테이너 (0) | 2022.10.25 |
[C++] STL Deque 컨테이너 (0) | 2022.10.25 |
댓글