- 책_곽용재님 홈페이지
- 책_노란북 - 책 가격비교
- 책_김재우-SICP번역
- 플밍_쏘쓰포지
- 플밍_CodingHorror ?
- 플밍_상킴
- 플밍_김민장님
- GPGStudy
- 플밍_미친감자님
- 플밍_jz
- 플밍_샤방샤방님
- 플밍_글쓰는프로그래머2
- 플밍_키보드후킹
- 사람_재혁
- 사람_kernel0
- 사람_박PD
- 사람_경석형
- 사람_nemo
- 사람_kikiwaka
- 사람_Junios
- 사람_harry
- 사람_어떤 개발자의 금서목록..
- 사람_모기소리
- 사람_낙타한마리
- 사람_redkuma
- 사람_영원의끝
- 사람_민식형
- 도스박스 다음카페
- 플레이웨어즈 - 게임하드웨어벤치마크
- http://puwazaza.com/
- David harvey의 Reading Marx's c…
- 씨네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 |
- 노무현
- modernc++
- 인문학
- programming challenges
- 건강
- 진중권
- 단상
- 일리아스
- c++
- 정성일
- 태그가 아깝다
- 영화
- 소비자고발
- BSP
- Programming
- 책
- 정신분석
- 유시민
- 강유원
- 프로그래밍
- 고전강의
- 유머
- 삼국지6
- 삼국지
- 게임
- 진삼국무쌍5
- 김두식
- template
- 고등학교 사회공부
- stl
- Today
- Total
목록분류 전체보기 (331)
lancelot.com
Special member function 사용자가 제공하지 않으면 "컴파일러가 제공하는 멤버 함수" 디폴트 생성자 ( default constructor ) 소멸자 ( destructor ) 복사 생성자 ( copy constructor ) 복사 대입연산자 ( copy assignment ) 이동 생성자 ( move constructor ) 이동 대입연산자 ( move assignment ) Special member function 들이 "trivial 하다"고 하는 경우의 의미는? https://docs.microsoft.com/ko-kr/cpp/cpp/trivial-standard-layout-and-pod-types?view=msvc-170 Trivial 의 조건 컴파일러가 생성하는 Specia..
new / delete #include class Point { int x, y, z; public: Point(int a, int b, int c) : x{ a }, y{ b }, z(c) { std::cout
다중상속과 this 기반 클래스 포인터로 파생 클래스 객체를 가리킬 때 "객체 안에 있는 기반 클래스의 위치"를 가리킨다 다중 상속일 경우 객체의 주소와 다를 수 있다. static_cast VS reinterpret_cast static_cast 인자로 전달된 주소 안에서 기반 클래스의 위치(주소)가 반환된다. 상속관계가 아닌 경우 에러 reinterpret_cast 항상 인자로 전달한 주소가 동일하게 반환된다. 상속관계가 아니어도 에러 아님. 해당 메모리를 "다르게(다른 타입으로) 해석하겠다" 는것. #include struct A { int x; }; struct B { int y; }; struct C : public A, public B { int z; }; int main() { C cc; s..
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) {}// ..