[C/C++] Declaration VS Definition
·
Language/C C++
Declaration은 변수의 이름, 타입, 초기값(있다면)에 대한 정보를 컴파일러에게 알려주는 것이다. 즉 선언이란 한 변수의 속성에 대해 자세한 내용을 제공하는 것이다.Definetion이란 변수가 어디에 저장되어있는지, 즉 변수가 메모리 어디에 할당되는지를 말한다.C에서 변수에 대한 선언과 정의는 동시에 일어난다.int a;a라는 변수에 이름(a)과 타입(int)같은 정보가 컴파일러로 보내져 심볼테이블이라는 자료구조에 저장될 것이다. 이를 통해 메모리에는 4byte가 할당될 것이다.변수의 선언은 일어나지만 정의는 일어나지 않는 경우를 보자. 바로 extern 키워드를 사용할 때 이다.xxxxxxxxxxextern int a;extern 키워드는 다른 파일에서 미리 정의된 변수 이름을 가져올 때 사용..
[C++] std::map
·
Language/C C++
흔히 사용하는 key-value 자료형이다. C++에서는 #include으로 사용할 수 있다.std::map m;주요 함수삽입xxxxxxxxxxm.insert(make_pair("a", 100));m.insert(make_pair("c", 400));m.insert(make_pair("d", 200));m.insert(make_pair("b", 300));삭제xxxxxxxxxxm.erase("a"); // key 또는 iterator검색​xm["b"] //value​// find는 iterator를 반환한다.m.find("b")->first; //keym.find("b")->second; //value이 때 key에 해당하는 값이 없다면[]연산자는 0을 반환한다.find는 end() iterator를 반..
[C++] 클래스 생성자
·
Language/C C++
클래스의 인스턴스를 생성할 때 반드시 생성자가 호출된다. 생성자를 통해 클래스가 어떻게 생성되는지 살펴보자.암시적 생성자와 명시적 생성자객체를 생성하는 방법은 클래스 내 멤버을 어떤 방식으로 초기화하느냐에 따라 호출되는 생성자가 달라지게 된다. 아래 예시 코드를 통해 알아보려 한다.아래와 같은 Point 클래스를 정의해보았다.x#include class Point{public: int x; int y;​ Point() : x(0), y(0) { printf("Point() called!\n"); }​ Point(int x) : x(x), y(0) { printf("Point(int x(%d)) called!\n", x); }​ Point(int x, int y) : x(x), y(y) { printf("..