This

    C++ 포인터 객체 자살 (delete this)

    delete this는 소멸자에 해선 안되고 또한 매우 안좋은 코딩 스타일이다. 사용하고자 하면 몇가지 주의 사항이 있다. new로만 인스턴스화가 되있어야 한다 (new[] X), 다른 포인터를 가리킨다던가, 레퍼런스를 가리켜서는 안된다. 맨 마지막 구문이여야 한다. 멤버 변수 변경 또는 함수 호출해선 안된다. this 오브젝트를 해제 후 건드려선 안된다, 역참조, -> 참조, 비교 등. class A { public: void fun() { delete this; } }; int main() { /* 실행 가능 */ A *ptr = new A; ptr->fun(); ptr = NULL; /* 에러 : Undefined Behavior */ A a; a.fun(); getchar(); return 0; ..

    C# 자기 자신 참조 (this) / 위임 생성자 (delegating constructor)

    C#은 C++과 다르게 위임 생성자 호출 시 부모 클래스 또는 자기 클래스 명칭을 사용하지 않는다. 아래와 같이 하면 에러가 뜬다. using System; using System.Collections.Generic; using System.Runtime.InteropServices; namespace ConsoleApplication1 { public class Test { int mVal = 0; public int ValProp { get { return mVal; } set { mVal = value; } } public Test() { Console.WriteLine("기본 생성자"); } public Test(int Val) : Test() { ValProp = Val; Console.Writ..

    C++ 자기 자신 참조 (this)

    아래 코드를 살펴보면 Set 함수에서 멤버 변수 val에 파라미터로 넘어오는 값을 대입하고자 하는데 공교롭게도 val을 파라미터로 넘어오는 값으로 인식한다 val은 초기화가 안됐으므로 쓰레기값이 출력될거다. #include using namespace std; class Parent { int val; public: void Set(int val) { val = val; } int Get() const { return val; } }; int main() { Parent parent; parent.Set(10); cout