CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다. CSE207 수강생이 아니여도 편안하게 질문하세요. 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다. 제목수업 내용 코드 비교 질문입니다.2019-11-11 17:34작성자dgclass Point {private: int x; int y; static int cntObj; // 객체 안에서 초기화할 수 없음. 반드시 클래스 밖에서 초기화// int* list;// ofstream fout;public: Point() : x(0), y(0) { //fout.open("file.txt"); //list = new int[100]; cntObj++; // 생성자 작동할 때마다 카운트 1증가 // 객체 안에서 초기화 불가 } // initialization 생성자 : 객체 안에 있는 멤버 변수를 초기화 Point(int _x, int _y) : x(_x), y(_y) { cntObj++; } // 소멸자 만들기 ~Point() { //// 할당해지 //delete[] list; //fout.close(); cout << "Destructed.." << endl; } static int getCntObj() { return cntObj; } void setXY(int _x, int _y) { this->x = _x; this->y = _y; } int getX() const { return this->x; } int getY() const { return this->y; } Point& operator=(const Point& pt) { this->x = pt.x; this->y = pt.y; return (*this); } friend ostream& operator<<(ostream& cout, const Point& pt); friend Point operator+(const Point& pt1, const Point& pt2); friend class SpyPoint;};int Point::cntObj = 0;ostream& operator<<(ostream& cout, const Point& pt) { cout << pt.x << ", " << pt.y << endl; return cout;}Point operator+(const Point& pt1, const Point& pt2) { Point result(pt1.x + pt2.x, pt1.y + pt2.y); return result;}class SkyPoint {public: void hacking(const Point& pt) { cout << "x: " << pt.x << endl; cout << "y: " << pt.y << endl; cout << "cntObj: " << pt.cntObj << endl << endl; }};int main() { Point pt1(1, 2); cout << "cntObj: " << pt1.getCntObj() << endl; Point* pPt = &pt1; cout << "cntObj: " << pt1.getCntObj() << endl; Point* list = new Point[5]; cout << "cntObj: " << list[0].getCntObj() << endl; cout << "Before delete[]" << endl; delete[] list; cout << "After delete[]" << endl; Point pt2(10, 20); Point pt3(100, 200); pt1 = pt2 + pt3; cout << "cntObj: " << pt1.getCntObj() << endl; SkyPoint spy; spy.hacking(pt1); spy.hacking(pt2); spy.hacking(pt3); cout << "Exit Program" << endl; return 0;}=====================================================================================class Point {private: int x; int y; static int cntObj; // 객체 안에서 초기화 할 수 없음. 반드시 클래스 밖에서 초기화 // int* list; // ofstream fout;public: Point() : x(0), y(0) { // list = new int[100]; cntObj++; } //initialization // 생성자 : 객체 안에 있는 멤버 변수를 초기화 Point(int _x, int _y) : x(_x), y(_y) { cntObj++; } // 함수 오버로딩 ~Point() { // fout.close(); //파일을 닫을때도. // delete[] list; //소멸자는 클래스 안에서 동적할당을 했을 때, 할당해제를 할 때 사용해주면 좋음. cout << "Destructed.." << endl; } static int getCntObj() { return cntObj; } void setXY(int _x, int _y) { this->x = _x; // this : 현재 객체 자기 자신의 주소값을 가지고 있는 변수 this->y = _y; } int getX() const { return this->x; } int getY() const { return this->y; } //Point pt1 = pt2 = pt3 Point& operator=(const Point& pt) { this->x = pt.x; this->y = pt.y; return (*this); } //friend함수 : 클래스 안에 있는 private과 public에 있는 모든 멤버 변수를 사용할 수 있음. friend ostream& operator<<(ostream& cout, const Point& pt); friend Point operator+(const Point& pt1, const Point& pt2); friend class SpyPoint;};int Point::cntObj = 0;// cout << pt --> <<(cout, pt) --> return cout// cout << pt1; cout << pt2// cout << pt1 << pt2//int& x = func(y) // return y (int&)ostream& operator<<(ostream& cout, const Point& pt) { cout << pt.x << ", " << pt.y << endl; return cout;}Point operator+(const Point& pt1, const Point& pt2) { Point result(pt1.x + pt2.x, pt1.y + pt2.y); return result;}class SpyPoint {public: void hacking(const Point& pt) { cout << "x: " << pt.x << endl; cout << "y: " << pt.y << endl; cout << "cntObj: " << pt.cntObj << endl << endl; }};int main() { Point pt1(1, 2); cout << "cntObj: " << pt1.getCntObj() << endl; Point* pPt = &pt1; // 객체가 아니라 포인터 변수이기 때문에 cntobj 변화 x cout << "cntObj: " << pt1.getCntObj() << endl; Point* list = new Point[5]; cout << "cntObj: " << list[0].getCntObj() << endl; cout << "Before delete[]" << endl; delete[] list; cout << "After delete[]" << endl; Point pt2(10, 20); Point pt3(100, 200); pt1 = pt2 + pt3; cout << "cntObj: " << pt1.getCntObj() << endl; SpyPoint spy; spy.hacking(pt1); spy.hacking(pt2); spy.hacking(pt3); cout << "Exit program" << endl; return 0;}11월 7일날 제가 친 코드는 위의 것(1번)이고, 친구가 아래 코드(2번)를 작성했는데요.지금 제 컴퓨터 상태로는 1번은 안 되는데 2번은 됩니다.제가 3번 확인해봤는데, 다른 점을 찾지 못했거든요.혹시 뭐가 잘못됐는지 알 수 있을까요?수업 시간에 1번 코드도 됐던거 같은데, 복습하다보니 안돼서 질문드립니다. 목록수정삭제답변글쓰기 댓글 [4] 댓글작성자(*)비밀번호(*)내용(*) 댓글 등록 더보기이전조교님 항상 lab 설명해주셔서 감사드리지만치즈스틱2019-11-11다음[re]수업 내용 코드 비교 질문입니다. 오류 내용 및 해당 코드 이미지 첨부했습니다.dg2019-11-12 Powered by MangBoard | 워드프레스 쇼핑몰 망보드