반년전부터 미친듯이 게임개발자의 꿈을 향해 달려가는 학부생입니다. 한 4개월전부터 많은 영상들을 쭉 보다가 처음으로 댓글을 남겨보네요. 처음에는 프로그래밍 관련 영상들의 내용을 정말 조금도 이해못했었는데 요즘에는 내용을 완벽히는 아니더라도 이해하고 공감해가고 있습니다. 그리고 지식이 쌓이고 실력이 늘수록 점점 더 많은 내용을 배워가고 또 생각하게 해 주시는 것 같습니다. 글쓰는 솜씨가 별로 안좋지만 감사한 마음에 댓글이라도 씁니다. 많은 도움이 되고 있습니다 매번 좋은 영상들 정말 감사합니다.
제 나름대로의 C++에서 struct를 선택하는 기준입니다. - 모든 멤버 변수가 scala data type이고 멤버 함수가 없다. 또는 이와 같은 조건의 고정 길이 array 또는 union, struct를 멤버 변수로 가지고 있다. 여기에 해당이 안되면, 즉, 포인터나 가변 길이 배열, 멤버 함수를 가진 union, struct, class를 포함하고 있다면 class를 사용한다. - 구조체를 이진 데이타로 고스란히 pack/unpack 할 수 있다. 즉, struct의 메모리 형태 그대로 데이터로 상호 변환 가능하다. 다만, 데이터 구조체 정렬(data structure alignment)를 주의한다. - 모든 멤버 변수를 외부에 공개할 수 있다. 반대로 외부에 공개할 필요가 없는 멤버 변수가 있다면 class를 선택한다.
C가 C++로 확장하면서 완전히 새롭게 언어구조를 정립한게 아니라 말그대 확장이기 때문에 기존의 C를 사용하던 사람들의 기준에 좀 더 많이 가있어서 모호하게 혼재되는 계념으로 확장된 것을 많은 부분에서 찾아볼수가 있죠 이제는 오랜기간이 지나고 C와 C++의 계념을 한꺼번에 배우게 된지도 오래된 만큼 그냥 사용할수 있어서 혼재해서 사용하기보다 원론적인 각각의 의미대로 좀더 명확하게 사용하는게 맞다는것에 동의합니다 저도 예전에 공부하면서 하도 섞어사용하거나 C와 C++을 계념을 섞어 사용하는 사람들이 많아서 공부하기가 매우 혼란했던 기억과 말씀하셨듯 남의 코드 유지보수하면서 정말 괴로운 괴상한코드도 많았네요
안녕하세요 포프님. 아직은 작은 스타트업에서 실무 경력 신입이자 어플리케이션 개발 리더로 일하고 있는 포프님의 팬입니다. 저의 경험부족을 최대한 포프님의 코딩 스탠다드와 개발 마인드를 적용해서 도전해보려고 합니다. 올려주신 C++ 코딩스탠다드를 읽어 보았는데, 경험부족으로 인한 것과 부족한 영어실력으로 인한 의미 파악이 안되는 부분에 대해 질문드립니다. 사용 IDE: Visual Studio 2015 1) 35. 'const_cast' 사용 관련 const_cast 키워드 대신, 해당 type의 object를 반환하는 function을 직접 만들어서 사용하라는 말씀이신가요? 2) 38. multiple files 관련 C#에서는 'partial' 키워드로 클래스를 여러 파일로 나누어서 코딩할 수 있다는 것은 알고있는데, C++에서도 이런 것이 가능한지는 몰랐습니다. C#처럼 implementation 소스 파일을 나눌 경우에 파일 네이밍 규칙으로 이해하면 될까요? 3) 39. "reverse OOP" pattern 관련 아직은 디자인 패턴에 대해 모르는 상태라 reverse OOP pattern의 개념을 모르지만, 예제를 통해 최대한 이해한 내용은 OpenGL 과 DirectX 를 사용하는 두 platform을 대응하기 위해서 인 것 같습니다. 제가 근무하는 곳은 딥러닝을 이용한 object detection을 주제로 하고 있고, caffe라는 오픈 소스 라이브러리를 사용하는데, 원본 라이브러리는 Linux 용이고, 제가 윈도우 용으로 포팅한 것이 있습니다.(Visual Stduio 2015에서 빌드 될 수 있도록 소스코드를 약간 수정함) 예로, class DetectionEngine; 이 있다면 DetectionEngine.h/DetectionEngine.cpp(for all platforms) DetectionEngine_win.h/DetectionEngine_win.cpp(called by DetectionEngine for windows platform) 이런식으로 되는 것인가요? 4) '
내용 잘봤습니다. 하지만 너무 어렵게 접근하시는것 같은데요. 전 단순히 용도에 따라 개념에 따라 나눠 쓰면 된다 생각됩니다. 왜냐하면 struct가 데이터에 대한 모음이라고 하더라도 그 데이터의 올바른 가공이나 헬퍼등의 메소드를 만들수 있다고 생각되네요. 실제로도 그렇게 활용하는 경우를 많이 봐왔구요. 데이터의 모음이냐 하나의 오브젝트로써 다른 오브젝트와 메시지를 주고 받나로... 개념적으로 struct 와 class를 구분해서 쓰고 있어요. 제 경험입니다만.... 물론 그 본질이 같더라도 말이죠. 비약적이긴 합니다만, 좀 큰 수저가 있다면 밥상위에선 숟가락이고 공사현장에선 삽인것 처럼요. 영상잘봤습니다.
역시 명품강의는 몇년이 지나도 빛이 나네요
반년전부터 미친듯이 게임개발자의 꿈을 향해 달려가는 학부생입니다.
한 4개월전부터 많은 영상들을 쭉 보다가 처음으로 댓글을 남겨보네요.
처음에는 프로그래밍 관련 영상들의 내용을 정말 조금도 이해못했었는데
요즘에는 내용을 완벽히는 아니더라도 이해하고 공감해가고 있습니다.
그리고 지식이 쌓이고 실력이 늘수록 점점 더 많은 내용을 배워가고 또 생각하게 해 주시는 것 같습니다.
글쓰는 솜씨가 별로 안좋지만 감사한 마음에 댓글이라도 씁니다.
많은 도움이 되고 있습니다 매번 좋은 영상들 정말 감사합니다.
제 나름대로의 C++에서 struct를 선택하는 기준입니다.
- 모든 멤버 변수가 scala data type이고 멤버 함수가 없다. 또는 이와 같은 조건의 고정 길이 array 또는 union, struct를 멤버 변수로 가지고 있다. 여기에 해당이 안되면, 즉, 포인터나 가변 길이 배열, 멤버 함수를 가진 union, struct, class를 포함하고 있다면 class를 사용한다.
- 구조체를 이진 데이타로 고스란히 pack/unpack 할 수 있다. 즉, struct의 메모리 형태 그대로 데이터로 상호 변환 가능하다. 다만, 데이터 구조체 정렬(data structure alignment)를 주의한다.
- 모든 멤버 변수를 외부에 공개할 수 있다. 반대로 외부에 공개할 필요가 없는 멤버 변수가 있다면 class를 선택한다.
C가 C++로 확장하면서 완전히 새롭게 언어구조를 정립한게 아니라 말그대 확장이기 때문에
기존의 C를 사용하던 사람들의 기준에 좀 더 많이 가있어서 모호하게 혼재되는 계념으로 확장된 것을
많은 부분에서 찾아볼수가 있죠
이제는 오랜기간이 지나고 C와 C++의 계념을 한꺼번에 배우게 된지도 오래된 만큼
그냥 사용할수 있어서 혼재해서 사용하기보다 원론적인 각각의 의미대로 좀더 명확하게 사용하는게 맞다는것에 동의합니다
저도 예전에 공부하면서 하도 섞어사용하거나 C와 C++을 계념을 섞어 사용하는 사람들이 많아서 공부하기가 매우 혼란했던 기억과 말씀하셨듯 남의 코드 유지보수하면서 정말 괴로운 괴상한코드도 많았네요
새로 알게 되는 것보다 기존에 혼자 생각하던 거 확신하게 해주는 영상이 더 주옥 같게 느껴지는 듯
람다 영상도 보고 이것도 봤는데 구구절절 맞는 이야기네요
코드가 내부적으로 어떻게 도는지 아는게 정말 재미있어요 ㅋㅋ 이걸 쉽게 설명해주셔서 영상이 꿀잼임 ㅋㅋ
코딩 스텐다드 강의 정말 좋습니다. 이번에는 영상 끝까지 봤습니다. ㅎ
+이준형 왜 이번만.....
C에 존재하지 않으면 기계에도 존재하지 않는다... 너무 좋은 말씀
Class 와 struct 두개비교 궁금했었는데 오늘 들와보니 영상이!! 설명 잘 들었습니다
기본이 되는 지식을 다시 복습할 수 있어서 좋았습니다.
좋은 말씀 잘 듣고 갑니다
감사히 봤습니다앙~
좋은영상 감사합니다.
구독은 이미 했으니 좋아요 누르고갑니다ㅎㅎ
썸네일 실화냐 ㄷㄷㄷ
잘봤습니다~!!
함수 객체에는 struct를 사용하는 경우도 있던데 그런건 어떻게 생각하시나요?
안녕하세요 포프님.
아직은 작은 스타트업에서 실무 경력 신입이자 어플리케이션 개발 리더로 일하고 있는 포프님의 팬입니다.
저의 경험부족을 최대한 포프님의 코딩 스탠다드와 개발 마인드를 적용해서 도전해보려고 합니다.
올려주신 C++ 코딩스탠다드를 읽어 보았는데, 경험부족으로 인한 것과 부족한 영어실력으로 인한 의미 파악이 안되는 부분에 대해 질문드립니다.
사용 IDE: Visual Studio 2015
1) 35. 'const_cast' 사용 관련
const_cast 키워드 대신, 해당 type의 object를 반환하는 function을 직접 만들어서 사용하라는 말씀이신가요?
2) 38. multiple files 관련
C#에서는 'partial' 키워드로 클래스를 여러 파일로 나누어서 코딩할 수 있다는 것은 알고있는데, C++에서도 이런 것이 가능한지는 몰랐습니다. C#처럼 implementation 소스 파일을 나눌 경우에 파일 네이밍 규칙으로 이해하면 될까요?
3) 39. "reverse OOP" pattern 관련
아직은 디자인 패턴에 대해 모르는 상태라 reverse OOP pattern의 개념을 모르지만, 예제를 통해 최대한 이해한 내용은 OpenGL 과 DirectX 를 사용하는 두 platform을 대응하기 위해서 인 것 같습니다.
제가 근무하는 곳은 딥러닝을 이용한 object detection을 주제로 하고 있고, caffe라는 오픈 소스 라이브러리를 사용하는데, 원본 라이브러리는 Linux 용이고, 제가 윈도우 용으로 포팅한 것이 있습니다.(Visual Stduio 2015에서 빌드 될 수 있도록 소스코드를 약간 수정함)
예로, class DetectionEngine; 이 있다면 DetectionEngine.h/DetectionEngine.cpp(for all platforms) DetectionEngine_win.h/DetectionEngine_win.cpp(called by DetectionEngine for windows platform) 이런식으로 되는 것인가요?
4) '
설명글에 올리신 코딩스탠다드를 java나 kotiln에서 써도 괜찮은가요?? 아니면 각 언어에 따른 스탠다드가 따로 있나요?
잘봤습니댜
좋아요~|
struct: 순수한 데이터만 모아놓은 것
class: struct + 멤버함수 + 객체지향
인가요?
그리고 C와 C++의 어셈블리 코드적으로 차이를 설명하셨는데
C에 있는 기능들은 어셈블리 코드적으로 다르고, C에 없고 C++에 있는 기능들은 어셈블리 코드적으로 비슷하나 컴파일러적으로 다른건가요?
포프님이 보기에 가장 파워풀한 언어는 머라고 생각하시나요??
+kh c 파워풀이란 개념자체가 워낙 넓어서... 언어디자인 측면에선 러스트... 가장 깔끔하고 지원좋아서 범용적으로 쓸수 있는거라면 시샵. 성능을 위해서라면 씨뿔뿔... 정도라고 생각해요...
코딩 스탠다드 ㅎㅎ
내용 잘봤습니다. 하지만 너무 어렵게 접근하시는것 같은데요. 전 단순히 용도에 따라 개념에 따라 나눠 쓰면 된다 생각됩니다. 왜냐하면 struct가 데이터에 대한 모음이라고 하더라도 그 데이터의 올바른 가공이나 헬퍼등의 메소드를 만들수 있다고 생각되네요. 실제로도 그렇게 활용하는 경우를 많이 봐왔구요. 데이터의 모음이냐 하나의 오브젝트로써 다른 오브젝트와 메시지를 주고 받나로... 개념적으로 struct 와 class를 구분해서 쓰고 있어요. 제 경험입니다만.... 물론 그 본질이 같더라도 말이죠. 비약적이긴 합니다만, 좀 큰 수저가 있다면 밥상위에선 숟가락이고 공사현장에선 삽인것 처럼요. 영상잘봤습니다.
포큐베이터 스탠다드
근데 포프님 파이썬 엄청 까던데, 왜 광고는 파이썬만 나와요???
+영혼탈출 그만큼 문제가 있으니... 광고로 애들을 끌려던가...(응?) 다른 언어는 광고가 없이도 잘 살아남나보죠. (반 농담입니다...)
약간... 성룡 아들 닮은듯...ㅋ...