일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- rendering pipeline
- graphics
- 2020.02.23
- sparse matrix
- numerical method
- Algorithm
- algorithm #알고리즘 #백준
- ppt
- 독서
- 프로그래머스
- TIP
- stretch force
- game jam
- 학습용
- Overloading
- oprerator
- UNORDERED_MAP
- Til
- Conjugate Gradient
- C
- ComputeShader
- C++
- 2020.03.16
- Implicit method
- 백준
- 알고리즘
- 논문
- 참조자
- 알고리즘연습
- class
- Today
- Total
목록C++ (14)
OSgood의 개발일기

참조자와 포인터의 차이점을 간단히 정리하고자 한다. 이 포스팅은 내가 가끔 헷갈릴 때 보기위해서 아주 간단히 메모용으로 적어놓는 것이기 때문에 좀 더 자세한 내용을 원하시는 분들은 다른 포스팅을 참고하는 것이 좋을 것 같다. 그러므로 최대한 간단히 개념정도만 적고 사용법은 포스팅하지 않겠다. 참조자 int name1 =100; int &name2 = name1; 참조자는 별칭을 만든다고 생각하면 될 것 같다.(참조자는 선언과 동시에 무엇을 참조하고 있는지 초기화를 해야한다.) 포인터 int name1 =100; int *name2 =&name1; 포인터는 어떤 변수의 주소값 자체를 저장하여 그 변수를 가르키고 있다고 생각하면 된다.
이 두개는 이름이 비슷해서 자주 헷갈리는 개념이다. 나 또한 이 두가지의 이름 때문에 자주 헷갈리기 때문에 기억하기 위해서 간단히 포스팅하고자 한다. 아예 두개의 개념을 모르거나 좀 더 자세한 개념을 원하시는 분은 다른 블로그의 글을 찾아보는 것을 추천한다. 오버로딩(Overloading) 같은 클래스 안에서 같은 이름의 메서드를 사용하는 것. 왜? => 같은 메서드의 이름을 쓰면서 취하는 매개변수의 갯수나 타입을 달리할 수 있다. 오버라이딩(Overriding) 부모 class에서 정의한 메서드를 자식 class에서 변경하는 것 왜? => 자식 class에서 메서드를 정의할 때 부모 class에서 정의했던 메서드의 이름, 매개변수를 그대로 쓰고 싶은데 메서드의 자세한 작동방식을 바꾸고 싶을 때 이용한다.

Class의 디폴트 대입 연산자는 멤버 간의 Shallow copy로 되어 있다. 이 때 클래스의 멤버들이 동적할당을 이용하고 있지 않으면 큰 문제가 발생하지 않는다. 하지만 만약 복사하는 값이 주소값이라면 Shallow copy는 큰 문제를 야기하고 런타임 에러를 발생시킬 수도 있다. 왜냐하면 동적할당으로 얻은 메모리를 이용할 때 Shallow copy를 하게 되면 메모리 공간은 그대로이고 이것을 가르키는 포인터는 양쪽 객체에서 똑같이 가지고 있기 때문에 한 쪽 객체의 destructor에서 메모리를 해제할 경우 다른 쪽에서의 접근은 실뢰할 수 없는 메모리 공간이 된다. 그림을 보면 이해가 더 쉬울 것 같아서 간단히 그림을 만들어 보았다. 위와 같이 Shallow copy를 하게 되면 한쪽은 소멸시켰을..
연산자 오버로딩에 대해서 복습하던 도중에 유튜브에 잘 정리해놓은 동영상이 있어서 이것으로 내용을 대체하려고 한다.(개인적으로 이 부분은 글로 읽는 것보다 설명을 듣는게 이해가 훨씬 잘 될 것이라고 생각한다.) 출처 - (유튜브 크리에이터)W TF [C++] 10장- 2 연산자 오버로딩의 의미와 방법
이건 사실 내가 포스팅을 할 것은 아니고 모르는 부분을 정리하던 중 어떤 분의 블로그를 보게 되었는데 클래스의 진짜 핵심적인 부분만 잘 정리를 해놓으신 것 같아서 URL을 달아 놓으려고 한다. Class에 관해서 헷갈리시는 분이라면 한 번쯤 포스팅을 읽어보는게 도움이 될 것 같다. https://winplz.tistory.com/entry/C-클래스-정의 출처: https://winplz.tistory.com/entry/C-클래스-정의[원플]
[객체지향의 사실과 오해-조영호] 를 읽으면서 생각한 객체지향의 핵심을 간단히 기록하려고 포스팅을 한다. 객체지향의 핵심은 결국 행동에 있다. 어떤 행동을 하는 객체이냐가 중요한 것이다. 어떤 행동을 한다는 것을 역할을 가지고 있다는 것을 의미한다. (역할을 기준으로 추상화 하여 객체들을 나눈다.) 다시 말해 객체를 나누는 기준은 역할을 통해 결정하는 것이 OOP의 핵심인 것 같다. 역할을 가지고 있는 객체들이 서로 어떤 협력관계를 가지고 있으며 이러한 협력관계를 다시 추상화 시킬 수 있다면 보다 쉬운 OOP 구조를 만들 수 있을 것이다. P.S 추상화 - 중요한 특징을 찾아낸 후 간단히 표현하는 것 (naver-지식백과)
이번 포스팅 역시 c++을 복습하다가 잊기 쉽고 기억하면 좋을 것 같은 기본적인 내용에 대해서 포스팅하겠다. 전역변수에서 static의 의미선언된 파일 내에서만 전역변수를 참조 허용하겠다는 의미함수 내에서 선언된 static의 의미한번만 초기화가 되고, 지역변수와 달리 함수를 빠져나가도 소멸되지 않는다.클래스 멤버변수에서 static의 의미한클래스에 대해 여러개 의 객체를 만들 때 static변수는 객체 별로 존재하는 변수가 아니라 프로그램 전체 영역에서 하나만 존재하는 변수이다.프로그램 실행과 동시에 초기화되어 메모리 공간에 할당된다.클래스 멤버함수에서 static의 의미선언된 클래스의 모든 객체가 공유한다.public으로 선언되면 클래스의 이름을 이용해서 호출이 가능하다.객체의 멤버로 존재하는 것이 ..
간단히 생성자와 소멸자가 어떤 시점에서 호출되는지에 대해서 복습한 내용을 적도록 하겠다. 생성자와 소멸자가 언제 호출되는지 헷갈리시는 분이라면 한 번쯤 이 글을 보면서 생각해보는 것도 좋은 공부가 될 것 같다.아래의 왼쪽은 간단한 생성자테스트를 위한 코드이고 오른쪽은 그것에 대한 console결과 이다. 또한 노란색은 내가 주석으로 간단히 설명해 놓은 자료이다. 코드를 읽으면서 따라가보며 생성자와 소멸자의 호출 위치를 생각해보는 것도 좋을 듯 싶다.