전체 글143 C++ 상속시 생성자, 소멸자의 호출 - 상속에서 기초 클래스의 생성자와 유도 클래스의 생성자가 모두 호출된다. - 소멸자 역시 기초 클래스, 유도 클래스 둘다 호출된다. #include using namespace std; class Parent { private: int test1; public: Parent() : test1(1) { cout 2013. 3. 9. ollydbg로 dll파일 디버깅 DLL을 로드하는 실행 파일이 존재하는 경우에는 해당 실행 파일를 ollydbg로 열면된다. 이때 원하는 DLL을 디버깅 하기 위해서 Ollydbg의 [Debugging options-Events-Break on new module(DLL)]를 체크한다. 그러면 새로운 DLL이 로드될 때마다 브레이크가 걸린다. (F9로 진행) DLL을 로드하는 실행 파일이 없다면 해당 DLL을 LoadLibrary()하는 exe파일을 만들거나 Ollydbg의 loaddll.exe를 사용하면 된다. - DLL을 열어서 DllMain(), export 함수들을 살펴본다. IDA의 Jump to Entry Point(CTRL+E)를 보면 엔트리 포인트로 DllMain()과 export 함수들을 쉽게 찾을 수 있다. - DLL.. 2013. 2. 28. 복사 생성자 복사 생성자 객체를 인자로 받을 수 있는 생성자를 복사 생성자라고 한다. - const를 붙여 내용 변경 방지 - 복사 생성자는 &를 반드시 해줄것. ex) 복사 생성자의 정의가 필요한 경우 class Test{ private: char *mystr; public: Test(char *pstr) { mystr = new char[strlen(pstr)+1]; strcpy(mystr, pstr); } ~Test() { delete []mystr; } }; int main() { Test myobj("Hello ~~"); Test myobj2 = myobj; //또는 Test myobj2(myobj)의 경우 } 멤버 변수 mystr이 가지는 주소값만 복사될 뿐 실제 "Hello ~~"라는 문자열은 하나 밖에.. 2013. 2. 27. C++ 기초 [3] [ const 함수 ] 1) const 함수 내에서는 멤버변수의 값을 변경하지 못한다. 2) const 함수 내에서는 const 아닌 함수의 호출이 제한된다. 3) 아래와 같이 선언된 const 참조자나 포인터 변수에서는 const함수만 호출가능하다. 4) const 키워드만으로도 오버로딩이 가능하다. (이 경우 const 객체에서 const 메소드 호출) TestClass *val1 = new TestClass; const TestClass &myobj2 = val1 ; const TestClass *myobj3 = val1 ; [ 생성자 ] 생성자는 객체 생성시 딱 한번 호출된다. 생성자 정의 : 클래스의 이름과 함수의 이름이 동일하게하고 반환형이 없이 만들면 됨. 객체 생성 예 ex) ExClass.. 2013. 2. 27. 이전 1 ··· 17 18 19 20 21 22 23 ··· 36 다음