728x90
C++
윤성우 열혈 C++. 1
- 헤더 파일 선언문 #include<iostream>
- std::cout과 <<을 이용한 출력
- std::endl을 이용한 개행
헤더파일 선언문 #include<iostream>
- C++에서는 입출력에 관련된 일을 하기 위해서 다음 형태의 헤더파일 선언을 추가해야 한다.
#include<iostream>
- 헤더 파일의 확장자는 C언어와 마찬가지로 .h이다. 그러나 C++에서는 프로그래머가 정의하는 헤더 파일의 선언이 아닌, 표준 헤더 파일의 선언에서는 확장자를 생략하기로 약속 되어 있다.
std::cout 과 << 연산자를 이용한 출력
- 출력을 위해서는 다음과 같은 형태를 취해야 한다.
std::cout << '출력대상' ;
- ‘출력대상’의 위치에는 무엇이든 올 수 있다. 정수와 실수를 비롯해서 문자열, 그리고 변수도 올 수 있다. 그리고 C언어의 printf 함수와 달리 %d, %s와 같은 서식 문자를 이용해서 별도의 출력 포맷을 지정하지 않아도 데이터의 성격에 따라 적절한 출력이 이뤄진다.
<< 연산자를 이용한 출력 대상의 연이은 표현과 개행
- <<도 연산자이다. 그리고 이 연산자를 이용하면 다음과 같이 둘 이상의 출력 대상을 연이어서 출력할 수 있다.
std::cout << '출력대상1' << '출력대상2' << '출력대상3' ;
- << 연산자를 이용한 std::endl의 출력은 개행으로 이어진다.
데이터의 입력에 사용되는 std::cin과 >> 연산자
- 키보드로부터 데이터 입력을 위해서는 다음과 같은 형식을 취하면 된다.
std::cin >> '변수';
- C++에서는 데이터의 입력도 데이터의 출력과 마찬가지로 별도의 포맷지정이 필요없기 때문이다.
C++의 지역변수 선언
- C언어로 프로그램을 작성하는 경우에는 함수를 정의함에 있어서 지역변수의 선언이 제일 먼저 등장해야만 했다. 그러나 C++의 지역변수 선언은 함수 내 어디든 삽입이 가능하다.
- 다음의 구조로 연속적인 데이터의 입력을 요구할 수 있다.
std::cin >> '변수1' >> '변수2';
- 첫번째로 입력되는 정수가 ‘변수1’에 저장되고, 두 번째 입력되는 정수가 ‘변수2’에 저장된다. 그리고 첫 번째 정수와 두 번째 정수의 경계는 탭, 스페이스 바, Enter키의 입력과 같은 공백에 의해 나눠진다.
함수 오버로딩
- 함수 호출 시 전달되는 인자를 통해서 호출하고자 하는 함수의 구분이 가능하기 때문에 매개변수의 선언 형태가 다르다면, 동일한 이름의 함수 정의를 허용할 수 있다. 이러한 형태의 함수 정의를 가리켜 함수 오버로딩(Function overloading)이라 한다.
- C++은 호출할 함수를 찾을 때, 함수의 이름과 매개변수의 선언 정보를 활용하기 때문에 이것이 가능하다. 함수의 오버로딩이 가능하려면 매개변수의 자료형 또는 개수가 달라야 한다.
매개변수의 디폴트 값
- 디폴트 값이란 기본적으로 설정되어 있는 값을 의미한다. 디폴트 값은 함수 호출 시 인자를 전달하지 않으면 디폴트값이 전달된 것으로 간주한다.
부분적 디폴트 값 설정
- 디폴트 값을 전부 지정할수도 있지만, 일부분만 디폴트 값을 지정할 수도 있다.
- 하지만 오른쪽 매개변수의 디폴트 값 부터 채우는 형태로 정의해야 한다. 함수에 전달되는 인자가 왼쪽에서 오른쪽으로 채워지기 때문이다.
인라인(inline) 함수
- in은 ‘내부’를 의미하고, line은 ‘프로그램 코드라인’을 의미한다.
- 하뭇의 몸체 부분이 함수 호출 문장을 완전히 대체 했을 때 함수가 인라인화 되었다 라고 표현한다.
- 매크로를 이용한 함수의 인라인화는 전처리기에 의해 처리되지만, 키워드 inline을 이용한 함수의 인라인화는 컴파일러에 의해서 처리가 된다. 따라서 컴파일러는 함수의 인라인화가 오히려 성능에 해가 된다고 판단할 경우, 이 키워드를 무시해버리기도 한다. 또한 컴파일러는 필요한 경우 일부 함수를 임의로 인라인 처리하기도 한다.
이름공간(namespace)
- 특정 영역에 이름을 붙여주기 위한 문법적 요소이다.
- 범위지정 연산자(::)을 사용해 이름공간을 지정할 때 사용한다.
- 이름공간은 다른 이름공간 안에 삽입될 수 있다.
- using을 이용한 이름공간 명시
책
함께 자라기
이자 적용 주기를 짧게 하는 법
- 자신이 이미 갖고 있는 것들을 잘 활용하라
- 새로운 것을 유입시키는 데이만 집중하다 보면 새로 들어온 것들이 이미 있는 것들을 덮어 버릴 수 있다. 자신이 올해 몇 권을 읽었다고 자랑하지 말고, 내가 그 지식을 얼마나 어떻게 활용하는지 반성하라
- 이미 갖고 있는 것들을 하이퍼링크로 서로 연결하라. 노드 간 이동속도가 빨라질 수 있도록 고속도로를 놔라. 즉, 이미 습득한 지식, 기술, 경험 등을 서로 연결지어서 시너지 효과가 나게 하고 하나의 영역에서 다른 영역으로 왔다갔다 하는 것을 자주해서 다른 영역간을 넘나들기가 수월해지도록 하라.
- 새로운 것이 들어오면 이미 갖고 있는 것들과 충돌을 시도하라.
- 현재 내가 하는 일이 차후에 밑거름이 될 수 있도록 하라.
- 외부 물질을 체화하라
- 계속 내부 순환만 하다가는 일정 수준에 수렴할 위험이 있다. 주기적인 외부 자극을 받으면 좋다. 단, 외부 자극을 받으면 그걸 재빨리 자기화 해야 한다.
- 외부 물질 이후 생긴 내부의 갈등을 해결하려는데에 노력을 기울여야 한다.
- 자신을 개선하는 프로세스에 대해 생각하라
- A작업을 되돌아보는 회피 반성 활동을 주기적으로 하는 프로세스를 만들어라
- 나를 개선하는 과정을 어떻게 하면 개선할 수 있을지 고민하라
- 피드백을 자주 받아라
- 사이클을 줄이고, 순환율을 높여라
새로운 언어를 배우는 비결
- 튜토리얼을 읽을 때 뭘 만들지 생각하고 읽는다.
- 공부할 때 표준 라이브러리 소스코드를 읽는다.
- 공부 중 다른 사람의 코드에 내가 필요한 기능을 추가한다.
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.09.26 UE5, CS (0) | 2024.09.26 |
---|---|
24.09.25 Unity, CS (1) | 2024.09.25 |
24.09.23 C++, CS (0) | 2024.09.23 |
24.09.20 C++, CS (0) | 2024.09.20 |
24.09.19 C#, CS (0) | 2024.09.19 |