본문 바로가기

포인터8

항목9. 리소스 누수를 피하는 방법의 정공은 소멸자이다. 이번 항목부터 리소스 누수, 예외처리에 대한 이야기가 펼쳐진다. 와~ 신난다. 본론으로 바로 들어가자. 1. 데이터를 받아서, 기록하려 한다. 2. 데이터를 파일에 저장되어 있다. 3. 파일안에는 "개" "고양이" "코끼리" ... 여러 동물들에 대한 이름과 정보가 들어가 있다. 다음과 같은 상황에서 DB를 구축한다고 하였을 때, AAA라는 추상 클래스를 생성 -> ex) "동물" AAA를 상속받은 BBB 클래스 -> ex) "개" AAA를 상속받은 CCC 클래스 -> ex) "코끼리" AAA를 상속받은 DDD 클래스 -> ex) "고양이" 라고 한다면, 다음 클래스가 대충 이해가 갈 것이다. #include #include class AAA { public: virtual void process() =.. 2011. 7. 6.
항목1. 포인터와 참조자를 구분하자. 포인터와 참조자의 기본 개념부터 파악해 보자. 여러 좋은 예, 상황에 비유 할 수도 있지만 가장 큰 차이점과, 비슷한 점을 생각해 보았을 때 주소를 통해 접근, 같은 이름공간을 사용한 접근. 이라고 생각한다. 포인터든, 참조자든 사용하는 이유는 말 그대로 다른곳에 저장되어 있는 정보를 접근하여, 변경. 사용하기 위해서라고 생각하는데, 접근 하는 방식이 다르다고 보면 될 것 같다. 1. 참조자는 Null 의 개념이 존재 하지 않는다. 즉, 생성과 동시에 이미 값이 존재하여야 한다는 것이다. string& str; // 말도 안되는 사용방법,어차피 되지도 않는다. string s("test"); string& rstr = s; // 생성과 동시에 값이 존재해야 한다는 것을 기억하자.​ 2. 상황에 따른 적절.. 2011. 4. 22.
this 포인터 this 포인터, 자기 자신을 호출하는 포인터. 자기 참조 포인터라고도 하는데 크게 어려운건 없다. #include class AAA { int n; public: AAA(int n) { // 컴파일에 문제는 없지만 // 프로그래머가 원하는 결과는 나오지 않을 것이다. //n = n;// n은 class AAA의 n이 아닌 인자 n만을 가지고 값을 넣기 때문이다. // 다음처럼 해주면 된다. this->n = n; } AAA* GetThis() { return this; } }; void main() { AAA aaa(10); // this 포인터는 그 클래스의 주소값을 가르키고 있기 때문에 // 다음처럼 하면 aaa의 주소를 리턴하여 출력한다. std::cout 2010. 3. 21.
정말 사소한 팁. int형 레퍼런스를 리턴하는 함수와 쓰일것 같지 않은 캐스팅 연산자, 하지만 알고 있으면 언젠간 쓸일이 있겠지. 있겠지...? 있나.. 있을까--a;; #include int n1; int& fun()// int& 리턴하는 fun함수 { return n1; } void main() { int val; int *pval = &val; *pval = (int)pval; fun() = 10; std::cout 2010. 3. 19.
레퍼런스(Reference) C++에서 추가된 기능으로 주소값을 넘겨주는 &연산자를 변수 선언시에 사용함으로써, 같은 메모리 공간을 사용하는 2개의 변수( 1개의 변수와 그 변수의 별칭 정도가 더 맞는 표현일지도 모르겠다)를 말한다. 같은 값을 가르킨다는 것에서 포인터와 비슷하다고 할 수도 있지만 그 개념은 조금 다르다. 레퍼런스 설정 방법 #include void main() { int n1 = 10; int &a = n1; } 디버그 화면을 보면 알 수 있지만 포인터처럼 *a의 값이 10이 아니다 그냥 a자체가 10을 가지고 있다는 것이 포인터와 다른 점이라고 할 수 있겠다. 실제로 &사용해서 값을 받으면 int n1 = 10; int a; 를 사용하나 int &a = n1; 실제 사용할때는 int a 나 int& a 나 차이가.. 2010. 3. 18.
와일드 포인터 #include void main() { int *n1 = 0; int *n2; } 과 같은 경우에 n1은 널포인터, n2는 와일드 포인터 라고 한단다. 용어적인 이야기인듯. 2010. 3. 17.