반응형

전체 보기 221

7년의 밤 (정유정)

되게 오랜만에 소설책을 읽었다. 고등학교 때 생기부를 위해서 읽은 책 말고 나의 자의로 읽은 책은 얼마만인지 모르겠다. 7년의 밤은 몇년 전부터 읽고 싶었던 책이었지만, 생기부에 적히기에 적절하지 않다는 이유로 항상 미뤘었다. 최근에도 살까? 아냐 사도 안읽을거같아.를 반복하던 와중에, 책을 선물받아 읽어보게 되었다. 소설, 특히 판타지 소설은 전혀 못읽는 나였기에, 걱정반 기대반 상태로 책을 읽었다. 이 책은 다행히 판타지스럽지 않고 현실적인 범죄소설이었다. 그래서 그런지 평소에 스릴러를 좋아하는 내 취향에 딱 맞았다. 너무 재밌고 몰입 되어서 틈만나면 책을 읽었고 한번 읽으면 30분은 넘게 푹 빠져 읽었다. (30분 얼마 안되어 보이겠지만,,, 나에게는 엄청난 시간) 이 책이 인상깊었던 이유는 모든 ..

취미/독서 2022.02.06

[ C++ ] 10강. 깊은 복사, mutable, friend, static 멤버변수/함수

깊은복사 얕은 복사를 하면 주소값도 옮겨지기 때문에 소멸과정에서 오류가 난다 이에 내용은 같고 메모리는 다르게 만들어 줄 수 있도록 복사 생성자를 수정해줘야한다 //깊은 복사, 복사생성자 수정 예시 ArrayData::ArrayData(const ArrayData& copy) // 자기 자신이 인자로 들어올 때 : capacity(copy.capacity), used(copy.used) // 들어온거랑 똑같이 멤버변수 세팅 { data = new double[capacity]; // 동적할당은 새로운 매모리에 for (int i = 0; i < used; i++) // 내용은 모두 똑같이 복사 data[i] = copy.data[i]; } const 추가적인 내용 - const 객체 생성가능, const..

[ C++ ] 9강. 실습, 얕은 복사

실습하면서 알게된 점 1. 원본 데이터를 수정하고싶으면 &로 리턴해주면 된다 2. this는 클래스의 포인터 타입이다. 3. 포인터 타입은 -> 를 사용해야한다. 얕은 복사 Simple sum2(sim1) - 복사생성자를 생성하지 않아도 저절로 생성된 - 내용만 복사됨 문제점 - 동적할당 된 내용을 복사한다면, 주소값도 값이 복사되기 때문에 소멸될 때 런타임 오류가 일어남. -> 깊은 복사로 해결 가능 //lec9_Salesman.h #pragma once #include using namespace std; class Salesman { private: string name; double sales; public: Salesman(); ~Salesman(); Salesman(string name, do..

[ 8강 ] 클래스 (const 멤버함수, 생성자, 소멸자)

const 멤버함수 int GetX() const; // const 멤버함수 선언 - 클래스 내에서만 선언 가능 - 동일 클래스에 선언 된 멤버변수 값 변경 불가능 - const 객체는 cont 함수만 호출 가능 생성자 생성자 : 객체가 생성될 때 자동으로 호출되는 함수 : 클래스와 이름은 동일하지만 return 값이 없다 (오버로딩 가능) : 생성자가 하나라도 있으면 디폴트 생성자 기능 사라짐 이니셜라이저 생성자에서만 사용가능 생성하고 대입하는데 아니라 인자있는 형태로 생성되게 한다 Rectangle::Rectangle(const int& x1, const int& y1, const int& x2, const int& y2) :upLeft(x1,x2),loRight(x2,y2) {} 멤버변수도 초기화 ..

[ C++ ] 7강. 클래스, 객체지향 프로그래밍

클래스 구조체 - 사용자 정의 데이터 타입 - 연관있는 데이터를 하나로 묶음 클래스 = 구조체 + 함수 클래스에 접근제어자를 붙이지 않으면 모두 private 이다 접근 제어자 public 어디서든 접근허용 protected 상속관계에 놓여 있을 때, 유도 클래스에서의 접근허용 private 클래스 내에서만 접근 허용 // 클래스 생성 예시 class Car{ private: char ID; int speed; public: void showState(); void Accel(); }; 주의해야할 점 - 클래스 멤버에 초기값 주지 않기 (객체에서 주기) Lamp클래스와 User클래스를 만들어거 유저가 램프를 컨트롤하는 프로그램 // 해더파일 #pragma once #include class Lamp { ..

[ C++ ] 6강. 동적할당

정적할당 - 프로그램이 시작되기 전에 미리 정해진 크기의 메모리를 할당받는 것 - 더 큰 입력이 들어오면 처리못하고 더 작은 입력이 들어오면 메모리 낭비 동적할당 - 실행 도중에 동적으로 메모리를 할당 받는 것 (heap영역) - 사용이 끝나면 메모리 반납 int *pi; // 동적 메모리를 가르키는 포인터, 주소값 저장 pi = new int; // 동적 메모리 할당 , new는 주소 리턴 *pi = 100; // 동적메모리 사용 delete pi; // 동적 메모리 반납 int* arr = new int[3]; // 동적인 배열 생성 delete[] arr; // 배열 메모리 삭제 //2차원 배열 모두 동적으로 받기 int **p = new int*[ROW]; for (int i=0;i row >> ..

[ C++ ]4강. 다차원 배열 / 실습

1. 10x10 배열 만들어서 아이템 세개 심기 #include #include //랜덤함수 s사용 using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(nullptr); char map[10][10]; char item[3] = { 'a','b','c' }; char stand = 'O'; //배열 기본값 세팅 for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { map[i][j] = 'O'; } } // 랜덤으로 a,b,c 삽입 for (int i = 0; i < 3; i++) { int a= rand() % 10; int b = rand() % 10; //중복 예외처리 if(s..

반응형