[c++] class object (클래스 객체 ) - ② 본문

객체지향프로그래밍 (C++)

[c++] class object (클래스 객체 ) - ②

미니모아 2020. 7. 9. 14:30
반응형
  1. 멤버 변수의 값을 변경하지 않는 메서드에서만 사용
  • 다른 개발자에게 이 함수의 멤버 변수의 값은 변경하지 않는다는 메세지

  • 실수로 멤버 변수의 값을 바꾸려고 시도할 때, 컴파일러 단에서 오류 메세지

  • const 객체를 사용해서 이 함수를 호출 할 수 있다.

    //point.cpp
    #include "point.h"
    #include<iostream>
    using namespace std; 
    Point::Point() {  
      x = 0;  
      y = 0;  
    }  
    Point::Point(int _x, int _y) {  
      x = _x;  
      y = _y;  
    }  
    Point::Point(const Point& pt) {  
      x = pt.x;  
      y = pt.y;  
    }  
    void Point:: Print() const {  
      cout << x <<" , "<< y << endl;  
    }
    
    //point.h  
    #pragma once
    
    class Point {  
    public:  
      void Print() const;  
      Point();  
      Point(int _x, int _y);  
      Point(const Point& pt); 
    
      void SetX(int value);
      void SetY(int value);
      int GetX() const { return x; }
      int GetY() const { return y; } 
    
    private:  
      int x, y;  
    };
    
    inline void Point::SetX(int value) {  
      if (value < 0)  
      x = 0;  
      else if (value > 100)  
      x = 100;  
      else  
      x = value;  
    }  
    inline void Point::SetY(int value) {  
      if (value < 0)  
      y = 0;  
      else if (value > 100)  
      y = 100;  
      else  
      y = value;  
    }
    
    //main.cpp
    
    #include  
    #include"point.h"  
    using namespace std;
    
    void Area(const Point& pt) {  
      int area = pt.GetX() * pt.GetY(); //const 객체는 const 메소드만 호출 가능  
      cout << "0, 0과 이 점이 이루는 사각형의 면적 = " << area << endl;  
    }  
    void main()  
    {  
      Point pt(100, 100);  
      Area(pt);  
    }
  1. 클래스의 멤버 함수 참조용 함수 포인터
typedef void(_FP1)(int);//오류  
typedef void(Point::_FP2)(int);  
void main()  
{  
Point pt(100, 100);  
FP1 fp1 = &Point::SetY; 오류  
FP2 fp2 = &Point::SetY;  
(pt.*fp2)(50);  
pt.Print();  
}
  1. 객체 배열

    void main() {
     Point arr[4] = {
         Point(10,20),Point(11,27),
         Point(99,80),Point(1000,-99),
     };
     for (auto i = 0; i < 4; i++)
         arr[i].Print();
    }
  2. 객체 동적 생성

     Point p1(5, 10);
     Point* p2 = new Point(); //default
     Point* p3 = new Point(50,50);//parameters
     Point* p4 = new Point(p1);//copy constructor
    
     (*p2).Print();
     p3->Print();
     p4->Print();
    
     delete p2;
     delete p3; 
     delete p4;
    
    p2 = p3 = p4 = NULL;

 

반응형

'객체지향프로그래밍 (C++)' 카테고리의 다른 글

[c++] 반복문 없이 8진수 변환 (재귀함수)  (0) 2020.07.09
[c++] 상속  (0) 2020.07.09
[c++] void pointer (void 포인터)  (0) 2020.07.07
[c++] 데이터 표현  (0) 2020.07.07
[c++] Union (공용체)  (0) 2020.07.07
Comments