- 책_곽용재님 홈페이지
- 책_노란북 - 책 가격비교
- 책_김재우-SICP번역
- 플밍_쏘쓰포지
- 플밍_CodingHorror ?
- 플밍_상킴
- 플밍_김민장님
- GPGStudy
- 플밍_미친감자님
- 플밍_jz
- 플밍_샤방샤방님
- 플밍_글쓰는프로그래머2
- 플밍_키보드후킹
- 사람_재혁
- 사람_kernel0
- 사람_박PD
- 사람_경석형
- 사람_nemo
- 사람_kikiwaka
- 사람_Junios
- 사람_harry
- 사람_어떤 개발자의 금서목록..
- 사람_모기소리
- 사람_낙타한마리
- 사람_redkuma
- 사람_영원의끝
- 사람_민식형
- 도스박스 다음카페
- 플레이웨어즈 - 게임하드웨어⋯
- http://puwazaza.com/
- David harvey의 Reading Marx⋯
- 씨네21
- 한겨레_임경선의 이기적인 상⋯
- 본격2차대전만화 - 굽시니스트
- 영화_정성일 글모음 페이지
- 영화_영화속이데올로기파악하기
- 음식_생선회
- 죽력고
- 사람_한밀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- programming challenges
- 진삼국무쌍5
- 메모리
- 프로그래밍
- 유시민
- 책
- 고전강의
- 정성일
- 삼국지6
- 태그가 아깝다
- 노무현
- 김두식
- 게임
- 영화
- 건강
- 단상
- c++
- template
- 강유원
- 진중권
- 정신분석
- Game
- 일리아스
- 인문학
- 유머
- 소비자고발
- Programming
- 고등학교 사회공부
- stl
- 삼국지
- Today
- 86
- Total
- 275,423
목록프로그래밍 (51)
lancelot.com

Pointer to member data #include struct Point { int x; int y; }; int main() { int num = 0; int* p1 = # int Point::* p2 = &Point::y;// 멤버 함수포인터처럼 객체에.* 연산자를 사용해서 접근하기 위함 *p1 = 10;// ok //*p2 = 10;// error Point pt; pt.*p2 = 10;// pt.y=10 // *( (char*)&pt+p2 )=10; std::cout

멤버함수의 호출원리(this call) class Point { public: int x{ 0 }; int y{0}; public : void set(int a, int b) { x = a; y = b; } }; int main() { Point pt1; Point pt2; pt1.set(10, 20); pt2.set(10, 20); } 주의 실제 함수 인자가 전달되는 방식과 객체 주소가 전달되는 방식은 약간의 차이가 있다. 표준으로 정해진 사항은 아니므로 32bit/ 64bit 환경, 컴파일러에 따라서도 차이가 있을 수 있음. static member 함수는 객체의 주소가 전달되지 않는다. this call 이 아님. 객체의 주소를 알 수 없기때문에 x, y에 접근할 수 없음. member functi..
변환연산자 : 객체가 다른 타입으로 변환될 때 호출되는 함수 함수이름에 반환이 있기때문에 반환 타입을 표기하지 않는다 operator TYPE() const // 상수 멤버함수로 만드는 경우가 많다 { return 값; } 변환 연산자 vs 변환 생성자 int pn, Int32 un 일때 pn=un; ==>: un.operator int(); 변환연산자 객체(Int32) => Int로 변환될 때 un=pn; ==> pn.opertor Int32() 는 만들 수 없다. 대입연산자, un.operator=(int) 가 가능한지 찾아보고 변환생성자, Int32(pn) 이 가능한지 찾는다. #include class Int32 { int value; public : Int32() : value(0) {} Int..

temporary named object VS unnamed object named object Point pt(1,2); 자신을 선언한 블록을 벗어날 때 파괴 unnamed object Point(1,2); 자신을 선언한 문장의 끝에서 파괴 임시객체(temporary) #include class Point { int x, y; public : Point(int x, int y) : x(x), y(y) { std::cout

range_for 를 이용해서 화면에 출력 #include #include int main() { std::vector v = { 1,2,3,4,5 }; for (auto e : v) std::cout
Dog 포인터가 Animal의 포인터에 대입가능하면, smartptr 의 포인터도 smartptr 의 포인터에 대입가능해야한다. template 생성자 필요 template class smartptr 을 friend 로 선언 필요 (생성자에서 private member에 접근해야하므로) class Animal {}; class Dog : public Animal {}; template class smartptr { T* ptr = nullptr; public : smartptr() = default; smartptr(T* p) : ptr(p) {} //smartptr(const smartptr& sp) {}// 같은 타입만 받을 수 있다. //smartptr(const smartptr& sp) {}// ..
객체 뿐만아니라 비교 기준이 되는 멤버 값으로도 검색 가능하게 하려면 People 객체와 문자열로 비교 가능해야한다 비교 함수객체안에 is_transparent 멤버타입이 있어야한다. (C++14) 신기하네... 나중에 시간나면 더 찾아봐야겠다. #include #include struct People { std::string name; int age; People(std::string name, int age) : name{ name }, age{ age } { } }; struct PeopleCompare { bool operator()(const People& p1, const People& p2) const { return p1.name < p2.name; } bool operator()(cons..
멤버 변수의 초기화를, 상속받는 부모클래스보다 먼저하고싶을때, 그 멤버 변수를 가지는 클래스를 만들어서, 부모클래스보다 앞에서 상속받으면 된다 이렇게까지 해야하는 곳이 있을까.. 싶고, 상속 순서에 따라 초기화가 결정되도록 하면, 나중에 복잡해질 경우에 문제가 생기지 않을까.. 싶기도 한데... 어쨌든 답답하면 써야지..ㅋ #include class Buffer { public : Buffer(std::size_t size) { std::cout
container 안의 item을 증가시키고 싶을때 ++ 등을 사용하는 것보다 advance를 사용하면, container가 달라도 같은 구현을 유지할 수 있어서 좋다. std::advance(it, N) 반복자 it를 N만큼 이동하는 알고리즘 반복자의 종류(category) 에 따라 +또는 ++ 연산자 사용 advance 구현방법 tag_dispatching : C++98 enable_if : C++11 if constexpr : C++17 concept & requires clauses : C++20 #include #include #include #include int main() { //std::vector c = { 1,2,3,4,5,6,7,8,9,10 }; std::list c = { 1,2,..