티스토리 뷰

MFC

[MFC] cpp 기본적인 문법들 보충

열혈허슬러 상추님 2019. 11. 14. 14:13
190719-3
 

 
객체 : 
정적인 상태 = 프로퍼티
기능 = 기능
 
[생산성]
재사용
확장성
유연성
수정성
유지보수
: trade off
 
캡슐화
상속
다형성
 

객체를 만드는 2가지 방법
#include <iostream>
using namespace std;
 
class Point {
    
};
int main() {
    Point p1;
    
    Point* p = new Point;
}
 
virtual 함수가 아닌것은 컴파일 시간대 그 함수가 정해진다. 어떤 함수를 호출할지 결정된다.
virtual 함수는 컴파일 타임에 결정되지 않고. 다음에 virtual 함수 테이블을 검색해서 호출하라고 결정된다.
함수가 virtual 테이블에 저장되고 참조하여 사용하게된다. (좀더 느리다 그래서)
 
 
class Point {
    int x;
    int y;
public:
    Point(int x, int y) {
        this->x = x;
        this->y = y;
    }   
    Point(int x) {
        this->x = x;
        y = 9999;
    }
    void Print() {
        cout << x << "," << y << endl;
    }
    const Point operator+(const Point& arg)const {
        return Point(x + arg.x, y + arg.y);
    }
    int operator[](const int i)const {
        if (i == 0)
            return x;
        else if (i == 1)
            return y;
        else
            throw bad_exception();
    }
    operator int() const{
        return x;
    }
};
 
int main()
{
    Point p1(2, 4);
    cout << p1[1] << endl;
    int i = p1;
    cout << i << endl;
    p1 = i; // Point(i) 가 호출된다!! (형변환 연산)
    p1.Print();
}
 

 
class Point {
    int x;
    int y;
public:
    Point(int x, int y) {
        this->x = x;
        this->y = y;
    }
    explicit Point(int x) { // explicit : 명시적으로만 형식변환이 가능하다.
        this->x = x;
        y = 9999;
    }
...
 
int main()
{
    int p2 = 10;
    Point p1 = (Point)p2; // 명시적으로 했으니 가능
    //p1 = p2; // 불가
    p1.Print();
}
공유하기 링크
TAG
,
댓글
댓글쓰기 폼