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();
}
'MFC' 카테고리의 다른 글
[MFC] Template (템플릿) cpp 중요 문법 (0) | 2019.11.13 |
---|---|
[MFC] Worker Thread (워커 쓰레드) (0) | 2019.11.12 |
[MFC] MDI, SDI, Document Template (multi, single) (0) | 2019.11.11 |
[MFC] 실행순서, DOC과 View 업데이트, 분할창에 사각형정보 다르게 (0) | 2019.11.10 |
Hide Show Controls Using the Button, List View, Draw Rectangle (0) | 2019.11.09 |