소프트웨어/c++

    상속이면, 자식 클래스를 생성하면 부모도 생성이 되는가??

    상속이면, 자식 클래스를 생성하면 부모도 생성이 되는가??

    1. 목적 상속을 할 때, 자식 클래스가 생성이 되면 부모클래스도 생성이 되는가?? 2. 증명 방법 Constructor를 확인해봅니다. 3. 코드 #include class Test { public: Test() { printf("Test create\n"); } }; class Test1 : Test{ public: Test1() { printf("Test1 create\n"); } }; class Test2 : Test1 { public: Test2() { printf("Test2 create\n"); } }; class Test3 : Test2 { public: Test3() { printf("Test3 create\n"); } }; int main(int argc, char *argv[]) { ..

    Singleton pattern에서 이상한 부분 발견!

    Singleton pattern에서 이상한 부분 발견!

    1. error를 발견했는데. error가 static으로 선언된 변수를 못찾아서 나오는 문제였습니다. 도통 이유를 알 수 없어서 이리 저리 헤매다가 어느 사이트를 찾았습니다. http://developer.nokia.com/community/discussion/showthread.php/213834-Singleton-implementation-undefined-reference 근데 이류를 모르겠네요...private로 선언한 변수를 어떻게 저런 방식으로 사용하지?어마무시하게 헷갈리네요;;내일 이유를 어쭤보고 알아봐야겠습니다. 2. error code undefined reference to `xxx::s_xxxx' 3. 다시 재현해서 기록해보기록 했습니다. 코드는 아래와 같습니다. #ifndef SI..

    Weird case. two header file and one source with static element.

    1. 만든 이유 (why made this code?) 이런 케이스를 디버깅해야 하는데 처음 보는 경우라 가능한지 궁금했습니다.( Meeting first this case, I wander what it is. ) 2. Class structureTestOne.h TestOne.cppnoHave.cppmain.cpp TestOne.cpp에서 noHave를 만들어서 저장하고,print를 하는데 noHave class를 불러와서 출력한다.그러니깐 noHave는 단순히 데이터의 역활정도로 보면 된다. 여기서 특이한 점은 Source 파일이 한 곳에 뭉쳐져 있어도 잘 동작하는 것이다. 저의 예상으로는 코드 스텍에 이상하게 쌓여서 동작을 하지 않는 것이였는데 잘 동작하는거 보니 싱숭생숭하다. (그럼 다른 원인을..

    클래스에 클래스를 저장하는 방법 3가지.

    1. 클래스의 포인터 타입으로 저장하는 경우 #include using namespace std; class Inner { int m_data; public: Inner(int data) : m_data(data) { } int getData() { return m_data; } }; class Outter { Inner *m_inner; public: void setInner(Inner *in) { m_inner = in; } Inner* getInner() { return m_inner; } }; int main() { // Setting Outter *out; out = new Outter; Inner *in; in = new Inner(10); out->setInner(in); // Getting..

    상속에 대해서

    상속에 대해서 보다가 궁금한게 생겼다. virtual 함수를 선언할 때 {] 뒤에 ;가 있는 것과 없는 것이 차이가 존재할까? 결론은 차이가 없다이다. (적어도 내 컴파일러는 동일하게 동작하였다.) #include class Test { public: virtual void render() {} virtual void draw() {}; }; class Exam : Test { public: void render() { printf("This is render() \n"); } void draw() { printf("This is draw() \n"); } }; int main(int argc, char *argv[]) { Exam ex; ex.draw(); ex.render(); return 0; }

    함수의 괄호 뒤에 const를 넣는 이유에 대해서

    여기 저기 검색을 해보니 함수 괄호 뒤에 const를 넣는 의미는, 멤버 변수의 값을 변경하지 않는다. 라는 의미라고 하더라구요(그리고 함수 괄호 뒤에 const를 넣는 함수는 멤벼함수일때만 가능하다고 하네요.) 간단한 실험을 준비해봤습니다. 1. 아래의 코드는 잘 실행되는 코드입니다. #include #include using namespace std; class Tester { private: char m_data[24]; public: void setData(char *input) { strcpy(m_data, input); } const char* getData() const { return m_data; } }; int main() { Tester test; test.setData((char*)..

    [펌] C 프로그래밍 문자열 비교 함수 (strcmp())

    출처 : http://ra2kstar.tistory.com/85 C 프로그래밍 문자열 비교 함수 (strcmp()) 두 문자열을 비교하기 위해서 어떻게 하면 될까. JAVA의 경우 equals() 를 이용하면 true, false 값을 얻어 올 수 있지만.. c 에서도 그런 것이 있을까? 물론 C에서도 두 문자열을 비교하는 함수는 존재하며, 그 종류도 다양한다. strcmp() 기능 두 문자열을 비교 기본형 int strcmp(const char *s1, const char *s2);s1 : 문자열s2 : 문자열 반환값 s1>s2 : 양수 , s1==s2 : 0 , s1s2 : 양수 , s1 == s2 : 0 , s1s2 : 양수 , s1 == s2 : 0 , s1s2 : 양수 , s1 == s2 : 0..

    printf에서 %d %09d %19d의 차이에 대해서

    %d는 int 형을 출력하는 것인데, %와 d사이에 여러 옵션을 넣을 수 있다. 그중에 아래의 것들을 살펴본다. #include int main(int argc, char *argv[]) { int num = 123456; printf("%09d\n",num); printf("%9d\n",num); printf("%19d\n",num); printf("%d\n",num); return 0; } output은000123456 123456 123456123456 이다.