본문 바로가기

프로그래밍 기초29

생성자(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.
인라인 함수(Inline function) 컴파일러가 함수를 호출할 때 함수가 정의된 부분으로 찾아가서 보고 다시 원래 위치로 돌아오는데 이 시간을 줄이기 위해서 함수 정의 부분의 코드를 호출된 프로그램코드에 그대로 복사가 되어져서 왔다 갔다 하는 이동시간을 줄이는 기법- 함수 앞에 inline이라고 쓰기만 하면 됨- 빠르게는 40%정도의 속도 효율이 있을 수 있다.- .h파일 안에서 정의가 되어야만 인라인화 할 수 있다. 기억하자.- 근데 컴파일러가 인라인화를 거부하는 경우도 생김(가상함수의 경우 inline을 써도 문제없이 돌아가지만 인라인화가 되지 않음)- 컴파일러가 알아서 인라인화 하는 경우도 있다.근데 전부 인라인을 쓰게 되면 프로그램 코드가 길어지기 때문에 정의는 짧고 자주 호출 되는 경우에 인라인 함수를 쓰는 것이 가장 좋다. 코드가.. 2016. 11. 11.
쿠키와 세션, 캐시 웹 서버를 처음 개발하면서 부딪혔던 부분 중 하나가 로그인 유지이다.Http는 TCP처럼 연결지향형이 아니다. 웹 브라우저가 웹 서버에 요청을 보내면 웹 서버는 요청을 한 웹 브라우저에 요청한 정보를 보내주고 끝이다. 웹 페이지에 접속해 있는 동안 웹서버와 연결이 되어 있는 상태가 아니기 때문에 게임 서버처럼 스레드풀(Thead pool)을 만들어 접속한 클라이언트를 관리할 필요가 없다. 1. 쿠키와 세션 그렇다면 웹 서버는 어떻게 각각의 클라이언트를 관리할까?예를 들어 우리가 네이버나 구글 같은 페이지에 로그인을 했다고 치자. 우리는 아이디와 패스워드를 입력하고 서버로 보낼 것이며, 서버는 브라우저에서 보낸 아이디와 패스워드를 DB와 비교하여 로그인이 되었다고 브라우저에 알릴 것이다. 이번에는 메일을 .. 2016. 10. 26.