'Attach'에 해당되는 글 24건

  1. 2005.08.12 잘못 알고 있던 것 vol.1 (6)
  2. 2005.08.08 const Class * this, Class const * this와 Class * const this (6)
  3. 2005.07.20 알바하면서 배운 것 (5)
  4. 2005.01.19 WMI 관련 웹문서 (1)
Attach2005.08.12 00:15
거창하게 제목을 쓰는 건, 있어보이려고 하는 제 천성인가봅니다 :)

여하튼.. 이번에도 까먹기 전에 적어두려고 합니다.

문서화! 아자!


...

잘못 알고 있었던 것은..


"C++에서 생성자 내에서 다른 생성자를 호출 할 수 없다!"


였습니다.
왜 그렇게 생각했는지 모르겠습니다. 알바하다가 언뜻 들었던 거라고 핑계대고 있습니다만;; 직접 해보지도 않고 이렇게 결론내려버리니 부끄럽기 짝이 없습니다.(누가 제 짝 좀 찾아주세요 ㅠㅠ)

여하튼 결론은.. 됩니다.(구라즐)
테스트 코드를 한번 짜봤는데.. 결과도 첨부해봅니다.
class A
{
public:
A() { cout << "default" << endl; }
A(int i)
{
A::A();
cout << "constructor " << i << endl;
}
};

int main()
{
A a(1);
return 0;
}

실행결과:
default
constructor 1

잘못 알고 있었으면서 친구한테 당당하게 알려준 것이 너무 민망하고 쪽팔립니다 ㅠㅠ 앞으로 조심해야겠습니다 ;ㅇ;

ps. 정확히 말하자면 생성자를 호출한다는 것이 아니라, 임시객체를 생성하는 것입니다. A::A();를 했을 때, 이름없는 임시 인스턴스가 생성되었다가 사라지는 것이지 default constructor에서 멤버를 초기화하는 것을 써먹을 수는 없다는 것입니다.(초기화 되는 것은 한마디로 임시객체의 멤버들이죠 ~_~)
예제 코드를 보면 다음과 같습니다.
class A
{
public:
int num;
A() { cout << "default" << endl; num = 0; }
A(int i)
{
num = i;
Class();
A::A();
cout << "constructor " << i << endl;
}

};

int main()
{
A a(3);
cout << a.num << endl;
return 0;
}

실행결과:
default
constructor 3
3

default constructor를 호출할 수 있다면, num은 0이 되어야겠죠.
엄연히 말하면, "생성자 내에서 다른 생성자를 불러서 멤버를 초기화하는 것은 불가능하다!"가 되겠네요 :$

ps2. 도움을 주신 Rica, GGoDooL에게 감사를 전합니다 :$
Posted by 飛烏
Attach2005.08.08 22:39
맨날 헷갈려 하다가.. 아예 적어놓을까 합니다.
머리가 나빠서 고생이군요 -_-;

[22:29:41] <이시카> 별 뒤에 콘스트가 있으면,
[22:29:44] <이시카> 디스가 다른 걸 못 가리켜
[22:29:45] <이시카> 별 앞이면
[22:29:51] <이시카> 디스가 가리키는 걸 변경못해


결론.
1. const Class * this = Class const * this
2. const Class * this는 this의 내용을 수정 못함(this의 내용이 constant)
3. Class * const this는 this가 딴 걸 못 가리킴(this가 딴 남자 객체를 못가르킴)
4. const char* str = "미너러민험"을 기억하라!
Posted by 飛烏
Attach2005.07.20 01:23
밑에도 있지만.. 요즘 모바일 게임회사에서 아르바이트를 하고 있습니다.
JAVA로 짜여진 게임을 BREW에 맞게 컨버팅하는 건데.. 만만하게 봤다가 크게 당하고 있습니다; JAVA 파일만 무려 44개이고, 클래스는 50개가 넘어가는 듯 합니다. 인터페이스에 abstract class, 상속에 상속을 하고.. 나름대로 상당히 복잡한 구조입니다.
덕분에 무지무지 고생을 하고 있습니다. BREW가 어설픈 C++이라.. 제가 C++을 잘 몰라서 삽을 무지 뜨네요. 어떻게 어떻게 해가고 있긴 한데 어렵네요. 특히 JAVA에서는 전혀 신경쓰지 않는 메모리관리 때문에 골치가 아픕니다. 어느 시점에서 delete를 해야 안전할지..

그래도 많이 배우고 있습니다. 책으로 언뜻 보았던 것들을 직접 사용하면서 신기해하고 삽 떠보고.. 배우고 있다는 느낌이 팍팍 든달까요?
최근에 알게 된 것을 몇 가지 이야기해보자면..

1. #pragma



2. virtual destructor, pure virtual function, 초기화



주저리주저리 쓰다보니 참 길어졌네요; 나중 가면 까먹을까봐 상세하게 적으려고 노력했는데.. 나~중에 보면 제대로 이해되려나 모르겠군요;; 또, 제가 잘못 알고 있을 수도 있으니..; 왠지 걱정이 됩니다 -_-;(그래도 쓴 게 아까워서라도 지울 순 없습니다 :$)
이번 방학동안 조금이라도 성장하려고 발버둥 치고 있는 중입니다. 그러는 의미에서 알바를 하기로 한 것은 잘한 것 같네요.(비록 주5일 아침 9시 반 출근이라는 압박이 있지만 ㅠㅠ) 지금까지는 퇴근하고 피곤하다는 이유로 계속 놀았는데.. 하루 한시간이라도 C++ 기초플러스와 Effective C++을 봐야겠다는 생각이 듭니다. 지난 학기 네트워크와 알고리즘 숙제를 C++로 해본다고 깝죽대면서 흉내는 내볼 수 있다..라고 생각했었는데, 흉내는 커녕 C++을 빙자한 C코드였다는 걸 깨닫게 되었습니다 ㅠㅠ 방학 끝나면 C++에 대해서 한 10% 정도는 알고 있다고 말할 수 있겠죠?;;
Posted by 飛烏
Attach2005.01.19 17:06
http://www.mongmonge.pe.kr/test/html/wmi/whitepaper.htm
Windows Management Instrumentation: 배경 및 개요

http://tunelinux.pe.kr/
시스템관리자를 위한 홈페이지


WMI를 이용해서 client에 어느 사람이 접속해 있는 지 알아낼 수 있을까?
Posted by 飛烏