ACABERRY와 함께하는 프로그래밍 공부 C#의 다중상속? 인터페이스 구현으로 해결이 가능하네요!http://blog.naver.com/PostView.nhn?blogId=rintiantta&logNo=40114081576&redirect=Dlog&widgetTypeCall=true 인터페이스 다중상속https://code.i-harness.com/ko/q/2b89d 언세이프로 포인터 쓰듯 다중상속 자체가 가능.그렇지만 사용하지 않는다.- 마소에서 명시 다형성으로 인해 참 좋은 상속기능이지만, 다중상속을 하도록 하게 구성되어있다면 뭔가 잘못된거 아닌가? 라고 생각해보았는데,진심 정말. 상황에 따라 다르다고 생각합니다.때에 따라서는 다중상속이 필요한 경우가 있고 언세이프로 쓰자니 언세이프할꺼같고 왠지 잘..
ACABERRY와 함께하는 프로그래밍 공부 코드리뷰 관련자료 카카오스토리 웹팀의 코드리뷰 경험 lint. 린트툴 오류수정기능이 있었군요!( 코드 스타일 자동리뷰 기능 ) https://www.slideshare.net/OhgyunAhn/ss-61189141 CodeReview - DevOn2013https://www.slideshare.net/pioneerhjlee/code-review-devon2013 코드리뷰 방법과 주의점 http://sv-story.blogspot.kr/2013/04/blog-post_28.html 실제 코드의 예를 들어 설명 ( 3개패턴 ) https://www.vobour.com/1000-%EA%B0%9C%EC%9D%98-%EC%BD%94%EB%93%9..
ACABERRY와 함께하는 프로그래밍 공부 IL(Intermediate Language) 텍스트보다 숫자코드에 입각한 저수준언어, 매우 빨리 원시 기계어로 번역될수 있는 기능을 가지고 있다. 자바의 바이트 코드와 비슷한 개념이다. 자바의 바이트 코드는 플랫폼에 독립적이다. 이는 바이트 코드 실행문을 가진 동일한 파일이 어떠한 플랫폼에서도 수행될 수 있다는 것이다. 예를 들면 운영체제에 상관없이 실행 시에 컴파일의 최종 단계가 쉽계 수행되어 코드가 실행될 수 있다. 즉 소스코드를 작성할 때 개발자는 단순히 자바 바이트 코드로 컴파일하기만 하면 그 프로그램이 어디에서도 실행 가능하다는 것이 보장된다. IL은 비슷하지만 좀더 발전된 개념이다. 가장 중요한 차이점은 자바의 바이트 코드는 인터프리트되는 반면에 I..
ACABERRY와 함께하는 프로그래밍 공부 객체지향 OOP에 대한 정리 나무위키 https://namu.wiki/w/%EA%B0%9D%EC%B2%B4%20%EC%A7%80%ED%96%A5%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D 1) 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식이다. 2) 이 OOP가 나오게 된 배경은 절차적프로그래밍의 순서도로 나타낼수 없는 전략시뮬. 이를 절차적코드로 만들시 스파게티 코드( 함수/메소드 기능비대, if-else얽힘, 콜백 3~5단계초과, 다중루프, 포인터남용 등 )로밖에 구현 불가능한 내용을 중복코드 / 입력 / 계산 ..
ACABERRY와 함께하는 프로그래밍 공부 C++과 C#의 차이점? 누군가가 이렇게 물어본다면 여러분들은 어떻게 대답하실건가요?아래의 참고자료들을 참조하여 자신이 '특징적이다'라고 생각하는 부분을 주로 답변하게될 것 같아요, 참조해서 유추해보면 좋을 것 같아요. MSDN https://docs.microsoft.com/ko-kr/previous-versions/visualstudio/visual-studio-2008/yyaad03b(v=vs.90) 만들어진 배경과 역사 C C++ JAVA 이 두 언어의 가장 큰 차이점은 C, C++은 소스레벨의 코딩이 가능하고, Java, C#는 클래스는 동적으로 움직이며 클래스 기반의 언어(?) 역사를 알고( 프로그램 언어의 탄생은 C -> C++, Java, C# 순..
내부 메모리 단편화 - 할당될 크기에 비해 실제 할당된 단위자원의 크기가 커서 해당 단위 자원 내부에 사용하지 않는 메모리 공간이 발생 할 때를 말한다.외부 메모리 단편화 - 총 할당 가능한 자원의 합에 비해 실제 할당 할 수 있는 자원의 크기가 작은 상태를 말한다. 해결방법 메모리 압축 (Memory Compaction) - 여러 곳에 분산되어 있는 단편화된 메모리공간들을 결합하여 하나의 큰 공간으로 만드는 것이다. (디스크조각모음) - CPU가 몇 개의 바이트씩 읽어오고 다시 쓰는 방법으로 반복해서 재배치 하기 떄문에 CPU 처리시간이 증가하여 처리기 효율이 크게 감소한다. 메모리 통합 (Memory Coalescint) - 단편화가 발생된 공간에서 인접해있는 다른 단편화 공간들을 하나로 통합시켜 큰..
OOP - 포함, 상속, 오버라이딩 1. 클래스의 재활용기존의 클래스를 재활용하는 방법에는 “상속"과 ”포함“이 있다.사람이라는 클래스가 있다고 하자. 현재 우리가 필요로 하는 클래스는 학생이라는 클래스인데 학생클래스는 사람클래스가 가지는 모든 멤버를 가져야 한다고 한다면 복사를 해서 사용한다. 여기서 코드의 중복이 생겨나고 사람클래스의 변경이 생기면 학생 클래스도 수정해야 하므로 유지보수에 비용이 들어갈 수 있다. ===> 상속과 포함을 사용함으로써 이런 코드의 중복을 방지하고 코드를 변경하고 싶으면 한 군데만 변경하면 나머지 모든 클래스의 코드가 변경되니 프로그램의 생산성이나 유지보수에 도움이 됨.Person{int age;} ① 포함Student클래스는 멤버 변수로 Person데이타 변수를 가진다...
상속 오버라이딩 함수 vs 가상 함수 (Overriding vs pure virtual function) 머릿속에 상속함수는 무엇이고, 가상함수는 무엇이다라고 정의는 되어있었지만, 둘이 어떻게 다른지 확실히 알지는 못했었다. 두개가 어떻게 다른지 말해보라고 하면, 말하기도 쉽지 않았다. (실제 코딩 인터뷰에서 이 문제를 물어봐서 당황하기도 했었어서) 정리하기 위해서 이 글을 쓴다. 1. 상속 상속이라는 개념은 오버라이딩으로 설명이 되는데, 클래스 A에 선언된 함수 func()가 있다고 가정하자. 그리고 클래스 B는 A로부터 파생된 함수, 즉 상속된 함수이고, 같은 함수 func()가 정의 된다. 다시 말해서, 기본(parent)클래스에서 정의된 멤버 함수를 파생된(child)클래스에서 같은형태로 선언하는..
C++/소멸자에 virtual을 쓰는 이유 먼저 상속을 받은 클래스의 생성과 소멸 과정을 보자. 생성자는 부모 클래스의 생성자가 먼저 불려지고, 소멸자는 자식 클래스의 소멸자가 먼저 불려지고 나서 부모 클래스의 소멸자가 불려진다. 그런데 다형성 이용을 위해 부모 클래스의 포인터로부터 자식 클래스를 호출할 때, 가상 함수로 정의되지 않은 자식 클래스의 오버라이딩된 함수를 호출하면 부모 클래스의 멤버 함수가 호출된다. 소멸자도 자식 클래스에서 오버라이딩된 함수라고 볼 수 있기 때문에 만약 부모 포인터로 객체를 삭제하면 부모 클래스의 소멸자가 호출된다. 따라서 소멸자를 가상 함수로 선언하지 않으면 이 경우 자식 클래스의 소멸자는 결코 호출되지 않는다. 가상 함수 키워드 virtual이 사용되었다면 이것은 자식..
16 : 9 비율 해상도 목록160 * 90176 * 99192 * 108208 * 117224 * 126240 * 135256 * 144272 * 153288 * 162304 * 171 320 * 180336 * 189352 * 198368 * 207384 * 216400 * 225416 * 234432 * 243448 * 252464 * 261 480 * 270496 * 279512 * 288528 * 297544 * 306560 * 315576 * 324592 * 333608 * 342624 * 351 640 * 360656 * 369672 * 378688 * 387704 * 396720 * 405736 * 414752 * 423768 * 432784 * 441 800 * 450816 * 45983..