본문 바로가기

2016/116

네임스페이스(namespace)란? C++를 공부해본 사람이라면 namespace가 무엇인지 들어보았을 것이다. C++에서는 printf 대신에 iostream에서 제공하는 cout을 쓴다고 배웠다. 그런데 cout을 쓰기 위해서는 전처리기 밑에 using namespace std; 를 적어놓아야 사용할 수 있다. 아니면 std::cout으로 사용을 해야 한다. 이미 알고 있겠지만 namespace에 대해 공부해보자.우리가 회사에 가게 되면 개인프로젝트는 절대 없다. 전부 팀으로 진행되는 프로젝트이고 여러 사람이 코드를 짜서 나중에 합치거나 좋지 않은 코드를 버리거나 한다. 근데 두 개의 팀에서 작업을 한 뒤 나중에 코드를 합쳤을 때를 생각해보자. 두 개의 팀에서 작성한 코드 중 클래스 이름이나 함수의 이름이 같은 것이 있을 수 있다. 실.. 2016. 11. 11.
getchar() 비주얼 스튜디오를 써 본 사람이라면 컴파일을 할 때 f5 또는 ctrl+f5을 사용하여 실행할 것이다. 둘의 차이를 알아보자.f5와 ctrl+f5의 차이는 비주얼 스튜디오가 함께 실행되느냐 실행파일만 독립적으로 실행되느냐의 차이이다. f5입력시 비주얼 스튜디오가 함께 실행되어서 디버그모드로 실행이 된다. 하지만 ctrl+f5로 실행 시 실행파일만 실행이 된다.코딩을 하다가 에러가 나면 에러를 찾아야 하는데 1학년 때의 나는 에러가 어디서 났는지 비주얼 스튜디오의 하단부에 있는 출력 창에서 찾아야만 했다. 몇 번째 줄에서 문제가 생겼는지 나오는 경우에는 찾아서 코드를 읽어보고 찾았지만 나오지 않는 경우에는 해결할 줄 몰랐다.때문에 우리는 디버그모드를 사용해야 한다. 중단점을 찍어 디버그를 통해 에러를 찾고.. 2016. 11. 11.
생성자(Constructor)란? 생성자(Constructor)란 C++에서 클래스의 객체 생성 시 동시에 호출이 되는 것이다. 일반적인 함수처럼 생겼으며 클래스와 동일한 이름을 가지고 있다. 회사 면접이나 테스트에서 영어로 나오는 경우가 있으니 Constructor라는 용어도 꼭 알아두자. (생성자 == Constructor) 눈에 익숙해지도록 계속 언급하겠다.생성자(Constructor)는 따로 명시해주지 않아도 알아서 생성이 된다. (컴파일러가 자동으로 생성해주는 세 가지: 생성자(Constructor), 복사 생성자(Copy Constructor), 대입 연산자 이 세 가지는 눈에 익도록 잠시 읽어보자. 계속해서 언급할 것이다.)해당 클래스의 객체를 생성할 때 생성자(Constructor)의 형태로 생성한다. 이전 장에서 객체는 .. 2016. 11. 11.
인자(Argument)와 매개변수(Parameter) 인자와 매개변수의 차이는 아주 간단한 기초지식이지만 중요한 포인트다. 둘은 비슷한 듯 보여도 사실은 전혀 다른 것을 가리키고 있기 때문에 언급하고 넘어간다.인자는 함수를 호출할 때 함수 매개변수로 넘겨지는 값을 말하고,매개변수, 즉 파라미터는 함수 선언 부에 괄호 안에 정의된 변수이다. 인자를 받아서 그 값을 담는 변수라고 보면 된다.앞선 장에서 봤던 코드를 보자. 여기서 Student라는 생성자를 보자. 생성자에 대해서는 다음 장에서 설명을 할 테니 void Student라는 일반 함수라고 생각하고 이해하도록 하자.class.h의 8번째 줄 Student(string name) 에서 string name이 바로 파라미터이다.class.cpp의 5번째 줄에서 “Jun”이 바로 인자이다. Jun이라는 문자.. 2016. 11. 11.
객체란? 객체는 실체(Instance)를 말한다.Class와 Instance를 구분할 줄 알아야 한다.우리가 클래스를 만들어 메인 함수 또는 다른 함수에서 클래스를 사용하려 할 때 인스턴스화(객체화)를 통해 실제로 메모리 상에 올라가야 그것을 객체라 지칭하고 사용할 수가 있다. 이 때 우리는 클래스의 형식을 가진 객체, 즉 실체(Instance)를 만드는 것이다. 예를 들어보자.형준은 실체이고 진환은 실체이다. 진환과 형준이 가진 학생이라는 특성은 class가 된다. 우리가 학생이라는 클래스를 만들면 모든 학생들이 공통적으로 가지는 특징들을 클래스에 정의할 수 있다. 하지만 그것은 실체(객체)가 아니다. 객체화(인스턴스화, 실체화)를 해야지만 실체(객체)가 되는 것이다. 학생이라는 클래스 형식으로 형준, 진환, .. 2016. 11. 11.