전체 글 (24) 썸네일형 리스트형 클래스 생성자와 소멸자 생성자란 클래스를 생성(인스턴스화)할 때 자동으로 호출하는 함수를 말한다. 생성자는 오버로딩이 가능하고, 내가 생성자를 생략해도 컴파일러가 자동으로 만들어서 실행한다. 생성자는 클래스의 맴버변수를 초기화 해주는 역할을 한다. 초기화 해주는 방법은 생성자가 없어도 다양한 방법으로 할 수 있다. 그렇다면 왜 생성자가 필요한 것일까? 여기서 부터는 나의 추론이다. 일단 컴퓨터는 초기화를 굉장히 중요시 여긴다. 전역변수가 저장되는 공간인 데이터 영역도 초기화 되지 않은 공간인 bss영역을 따로 잡는다. 굳이 bss를 따로 잡는 이유는 초기화 되지 않은 변수는 공간을 할당하지 않게 되고 결과적으로 메모리를 아낄 수 있기 때문이다. 이는 하드웨어가 제한적인 프로그래밍(임베디드 같은)에서는 의미가 있지만, 우리가 하.. static 키워드 static이란 정적지역변수를 말한다. 뜻을 하나하나 풀어서 보면 이해하기 쉽다. 정적 - 지역 - 변수 변수 - 변수는 스택에 저장된다. ( 동적할당은 다른 이야기이다. 아래에서 보면 변수는 a,*b이다. 10과 new int(10)은 값이다. 즉 변수 a,*b는 스택에 저장이 된 것이고, 10은 상수값 new int(10)은 힙에 상수로 저장되어 있고 *b가 그 주소값을 가진다는 이야기이다. ) int a = 10; int *b = new int(10); 지역변수 - 지역변수는 스코프 내에서만 유효하다. int main(){ a = 10;(x) } void func(){ int a; } 지역변수 a는 func()함수내의 스코프에서만 유효하므로 main에서 접근할 수 없다. 정적지역변수 - 정적이란 정.. OOP의 특징 oop란 Object Oriented Programming 의 줄임말로 영어 해석 그대로 객체를 지향하는 프로그래밍이라는 뜻이다. oop를 왜 사용하는 것일까? - 프로그램의 유지 보수를 쉽게 하기 위해서 이다. 개발을 하다 보면 새로운 기능을 추가하기 위해, 혹은 버그를 수정하기 위해 등등 수없이 코드를 다시 수정해야 하는 일이 생긴다. oop는 이러한 과정을 좀 더 쉽게 하게 해준다. ex) 강아지가 우는 프로그램을 만든다고 가정해보자 절차지향 객체지향 class Dog { public: string name; int age; }; void cry(Dog dog) { cout STL vector vector란 stl에서 제공하는 컨테이너 중 하나로 가변배열이다. 여러 함수를 제공하고, 잘 사용하면 굉장히 편하다. 다른 stl 컨테이너를 보면 알겠지만, 다른 컨테이너들도 대부분 똑같은 함수를 가지고 있고, 동작도 같다. 즉 하나의 컨테이너만 쓸줄 안다면, 다른것을 사용하는 것도 굉장히 쉽다. 그렇다면 왜 여러가지의 컨테이너가 존재하는 것일까? 컨테이너는 각각의 특징을 가진 ADT(Abstract Data Type)를 DA(Data Structure)로 구현한 것이다. 그래서 컨테이너의 특징을 알아야 한다. vector는 array를 사용해서 구현한 것이다. 때문에 array의 특징을 그대로 가진다. array의 장점 : 인덱스에 임의접근이 가능하다. array의 단점 : 요소를 삽입 삭제하면 비용.. 이전 1 2 3 4 5 6 다음