#include <iostream>
using namespace std;
class Account {
public:
Account() : money(0) {};
Account(int money) : money(money) {};
void Deposit(int d);
void Draw(int d);
int ViewMoney(void);
private:
int money;
};
void Account::Deposit(const int d)
{
~~d = money;~~
money += d;
}
void Account::Draw(int d)
{
if (money >= d) {
money -= d;
}
}
Const int Account::ViewMoney() const
{
~~money++;~~
return money;
}
int main() {
}
메서드의 상수화: 메서드안에서 자기가 속한 다른 멤버변수를 건들수없게 만들어버리는거야!
리턴만해주는 역할인데 값이 바뀌면 안되는경우,,,메서드를 상수화시켜버려! 주로 멤버변수값을 얻어오게하는 Get함수에서 사용할만함. 어떻게? 함수 옆에 const 붙여서
매개변수의 상수화: 어떤 함수의 인자로 주는 매개변수가 그 함수 내에서 값이 변하지 안도록 상수화시켜버려! 혹시모를 실수를 방지하는 역할을 하게됨.
함수앞에 const를 붙이는거는 무슨의미? 리턴값이 상수라는거. 사실 대부분 그래서 의미가 별로 없는경우 많아.
#include <iostream>
class Vector2 {
private:
float x;
float y;
public:
Vector2();
Vector2(float x, float y);
static Vector2 Sum(Vector2 a, Vector2 b) { // 정적인 멤버메소드
return Vector2(a.x + b.x, a.y + b.y);
}
Vector2 Add(Vector2 rhs) { // 동적인 멤버메소드
return Vector2(x + rhs.x, y + rhs.y);
}
Vector2 operator+(Vector2 rhs) { // 같은 클래스 객체간 + 연산의 규칙 지정, 동적 메소드. 연산자 오버로딩임
return Vector2(x + rhs.x, y + rhs.y);
}
float GetX() const;
float GetY() const;
};
Vector2::Vector2(): x(0), y(0) { }
Vector2::Vector2(float x, float y): x(x), y(y) { }
int main()
{
Vector2 a(2,3);
Vector2 b(-1, 4);
Vector2 c = a + b;
Vector2 c1 = Vector2::Sum(a,b);
Vector2 c2 = a.Add(b);
}
선언과 정의 분리하고, const로 메소드의 상수화 하고, 매개변수도 상수화하는게 좋음! 가능하다면!