C++ operator overloading 스마트 포인터
달달항사탕
#include iostream
#include string
using namespace std;
class Point
{
private:
int x;int y;
public:
Point (int x, int y);
int getx() {return x;}
int gety() {return y;}
};
Point::Point(int x, int y) {
this-x = x; this-y = y;
}
class U_Ptr {
friend class HasPtr;
Point *ip;
int use;
U_Ptr(Point *p): ip(p), use(1) { }
~U_Ptr() { delete ip; }
public:
Point& operator*() const {return *ip;}
Point* operator-() const {return ip;}
};
class HasPtr {
public:
HasPtr(Point *p): ptr(new U_Ptr(p)) { }
HasPtr(const HasPtr &orig):ptr(orig.ptr) { ++ptr-use;}
HasPtr& operator=(const HasPtr&);
U_Ptr& operator*() const {return *ptr;}
U_Ptr* operator-() const {return ptr;}
~HasPtr() {if (--ptr-use == 0) delete ptr;}
private:
U_Ptr *ptr; // points to use-counted U_Ptr class
};
HasPtr& HasPtr::operator=(const HasPtr &rhs)
{
++rhs.ptr-use; // increment use count on rhs first
if (--ptr-use == 0)
delete ptr; // if use count goes to 0 on this object, delete it
ptr = rhs.ptr; // copy the U_Ptr object
return *this;
}
int main()
{
Point *p1 = new Point(10,20);
Point *p2 = new Point(30,40);
HasPtr ptr1(p1) , ptr2(p2);
ptr1 = ptr2;
cout *ptr: x = ptr1-getx() *ptr: y = ptr2-gety() endl;
cout *ptr: x = (*ptr1).getx() *ptr: y = (*ptr2).gety() endl;
return 0;
}operator overloading이 연속으로 두 번되는 코드인데 에러가 뜨네요
제가 직접 operator 함수를 호출하게 하는 코드를 적으면 문제 없는데 말이죠 ㅠ
U_Ptr까지는 oveloading이 되는데 Point 클래스 타입으로는 안 됩니다...
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2652880 | 배열입력을 묻고 싶습니다 (3) | 사에 | 2024-04-26 |
2652852 | strcmp함수 사용 관련,동적영역메모리접근관련 질문..이요. (1) | 민서 | 2024-04-26 |
2652801 | 안좋은 코딩 습관 지적좀요. | Addictive | 2024-04-25 |
2652779 | 문자열의 주소값 출력에 대해서 질문드립니다. | 핑크펄 | 2024-04-25 |
2652748 | 좀 도와주세요 ㅠ | 연체리 | 2024-04-25 |
2652719 | 다음프로그램의 실행결과를 알아보자.. (6) | 분홍이 | 2024-04-25 |
2652641 | 소인수프로그램 오류 (1) | 모람 | 2024-04-24 |
2652555 | 다이아 몬드 설명좀 부탁드립니다 | 갈기슭 | 2024-04-23 |
2652529 | 반복문을 .... (1) | 우시 | 2024-04-23 |
2652417 | 방향키로 커서이동 | 목소리 | 2024-04-22 |
2652339 | 구조체끼리 연결 왜 안될까요? (1) | 도담 | 2024-04-21 |
2652315 | 제발 도와주세요(실행파일까지첨부) | 은소라 | 2024-04-21 |
2652285 | 면산적님 질문요 (1) | 세찬 | 2024-04-21 |
2652253 | 다중루프를 이용한 이등변 삼각형 만들기 질문이요. | 알프레드 | 2024-04-20 |
2652226 | 결과 값이 무조건0 으로 나옵니다...... (5) | 빗줄기 | 2024-04-20 |
2652198 | 연결 list 질문요~ | Sweeety | 2024-04-20 |
2652168 | 배열 정렬에서.. (6) | 비 | 2024-04-20 |
2652137 | scanf에서 나는 의문점입니다 (2) | 말글 | 2024-04-19 |
2652084 | timeGetTime질문이요 | 환찬 | 2024-04-19 |
2652058 | 포인터의 기본적인 질문입니다! (3) | 해뜰참 | 2024-04-19 |