본문 바로가기

Programing/C++

(27)
[C++] C++와 표준 라이브러리 초단기 속성코스(포인터, 참조, const, 타입추론) 출저 : 책, 전문가를 위한 C++ 메모리 공간을 적당히 할당하기만 하면 어떠한 값이라도 힙에 저장할 수 있다. 예를 들어 정수값을 힙에 저장하려면 정수 타입에 맞는 메모리 공간을 할당해야하는데 이때 다음과 같이 포인터를 선언해야 한다. int* myIntegerPointer; int 타입 뒤에 붙은 별표(*)는 이 변수가 정수 타입에 대한 메모리 공간을 가르킨다는 것을 의미한다. 이 때 포인터는 동적으로 할당된 힙 메모리를 가리키는 화살표와 같다. 아직 값을 할당 하지 않았기 때문에 포인터가 구체적으로 가리키는 대상은 없다. 이를 초기화 되지 않은 변수 라 부른다. 변수를 선언한 후에는 반드시 초기화 해야한다. 특히 포인터 변수는 초기화 하지 않으면 어느 메모리를 가르키는지 알수 없기 때문에 반드시 초..
[C++] C++와 표준 라이브러리 초단기 속성코스(반복문, 스트링, 스택 & 힙) 출저 : 책, 전문가를 위한 C++ ① 반복문 컴퓨터는 같은 일을 계속 반복하는데 뛰어나다. 이를 위해 C++는 while, do.while,for, 범위기반 for 등 네가지 반복 메커니즘을 제공한다. ② while문 while문은 주어진 표현식이 true가 될 때 까지 일정한 코드 블록을 계속해서 반복한다. 다음 코드는 This is silly. 라는 문장을 다섯번 출력한다. #include int main() { int i = 0; while (i < 5) { std::cout
[C++] C++와 표준 라이브러리 초단기 속성코스(함수, 배열, 벡터) 출저 : 책, 전문가를 위한 C++ 함수 규모가 어느 정도 큰 프로그램에서 코드를 모두 main()안에 담으면 관리하기 힘들어진다. 프로그램의 가독성을 높이려면 함수 단위로 간결하게 나눠서 작성해야 한다. C++에서 함수를 사용하려면 반드시 사용하려는 위치보다 앞에서 선언해야 한다. 특정한 파일 안에서만 사용할 함수는 선언과 구현(정의) 모두 소스 파일 안에 작성한다. 반면 함수를 다른 모듈이나 파일에서도 사용해야 한다면 그 함 수는 헤더 파일에 작성하고 구현은 소스파일에 작성한다. ※ 함수를 선언하는 문장을 함수 프로토타입 또는 함수 헤더라 부른다. 함수의 구체적인 내용은 보지 않고, 그 함수에 접근하는 방식만 표현한다는 의미가 강하다. 또한 함수의 리턴 타입을 제외한 함수 이름, 매개변수 목록을 함수..
[C++] C++와 표준 라이브러리 초단기 속성코스(조건문) 출저 : 책, 전문가를 위한 C++ 조건문을 사용하면 어떤 값이 참 또는 거짓인지에 따라 주어진코드를 실행할지 결정할 수 있다. C++ 에서 지원하는 조건문 중에서도 대표적인 세 가지 구문인 if/else문, switch문, 조건 연산자를 소개 한다. 1) if/else문 가장 흔히 사용하는 조건문은 if문이며, else문과 함께 쓸수 있다. if문에 나온 조건이 참이면 if문에 속한 코드를 실행한다. 조건이 참이 아니면 if 블록을 빠져나와 그 뒤에 나오는 문장을 실항하거나, else문이 명시돼 있다면 else문에 속한 코드를 실행한다. if(i > 4) { // 뭔가 작업한다. } else if ( i > 2) { // 다른 일을 한다. } else { // 다른 일을 한다. } if 문 뒤에 소괄호..
[C++] C++와 표준 라이브러리 초단기 속성코스(연산자, 타입, 구조체) 출저 : 책, 전문가를 위한 C++ 변수이 값을 변경 할수 없다면 변수를 사용할 이유가 없다. 다음 표는 C++에서 변수값 변경 용도로 가장 흔히 사용되는 연산자와 사용예를 보여주고 있다. C++연산자는 이항(바이너리) 연산자, 단항(유너리) 연산자, 삼항(터너리) 연산자로 분류 할 수 있다. 다음 코드는 가장 자주 사용 되는 변수 타입과 연산자를 사용하는 예를 보여주고 있다. #include using namespace std; int main() { int someInteger = 256; short someShort; long someLong; float someFloat; double someDouble; someInteger++; // 257 someInteger *= 2; // 514 some..
[C++] C++와 표준 라이브러리 초단기 속성코스(리터럴(literal) & 변수) 출저 : 책, 전문가를 위한 C++ 리터럴(literal)은 표시한 숫자나 스트링과 같은 값을 의미한다. C++는 다양한 표준 라이브러리를 제공한다. 숫자(123)는 다음과 같은 리터럴로 표현 할 수 있다. 십진수 리터럴 : 123 8진수 리터럴 : 0173 16진수 리터럴 : 0x7B 이진수 리터럴 : 0b1111011 부동 소수 값 (예, 3.14f) 배정도 부동 소수점 값(예, 3.14) 단일 문자(예 : 'a') '0'으로 끝나는 문자 배열(예 : "character array") 숫자 리터럴에서는 자릿수 구분자를 사용 할 수 있다. 자릿수 구분자는 작은 따옴표로 표현한다. 23'456'789 0.123'456f 변수는 코드 안 어디에서나 선언할 수 있으며, 현재 블록 안에서 변수를 선언한 줄 다..
[C++] C++ 기초(주석, 전처리 지시자, main()함수, I/O Stream) 프로그래밍언어의 공식 예제 "Hello, World' 간단한 C++코드를 살펴보자 이코드를 실행하면 화면에 'Hello World'란 메시지를 출현한다. 여기에 C++형식에 대한 다음과 같은 중요한 개념이 담겨 있다. 1) 주석 2) 전처리 지시자 3) main() 함수 4) I/O 스트림 // helloworld.cpp #include int main() { std::cout
[C++] 정적 결합, 동적 결합 Summary) 정적 결합 : 가리키고 있는 타입이 아니라 스스로, 변수(객체)의 타입만 보고 어떤 함수로 갈지를 결정 한 것이다. 이렇게 객체의 타입만 보고 가는 것을 정적 결합이라고 한다. 다시 얘기하면 컴파일 타임에 어떤 것을 호출할지 이미 결정하는 것을 정적 결합 예 ) 함수 오버로딩 동적 결합 런타임 바인딩, 즉 런타임 도중에 타입이 결정되는 것을 동적 바인딩이라고 한다. 예 ) 함수 오버라이딩 오버로딩에 대해 알아보자. #include using namespace std; class A { public: int num; }; class B : public A { }; A operator+(const A& x, const A& y) { A a; a.num = x.num + y.num; retur..