🤔 지난 시간에는 Rectangle 클래스를 public내에서 선언과 정의를 동시에 하였다.
이번에는 클래스의 네임스페이스를 활용하여 함수를 외부에 정의를 해보자.
#include <iostream>
using namespace std;
class Rectangle
{
private:
int length;
int breadth;
public:
Rectangle() { length = breadth = 0; }
Rectangle(int, int);
int area();
int perimeter();
void setlength(int l)
{
length = l;
}
int getlength()
{
return length;
}
void setbreadth(int b)
{
breadth = b;
}
int getbreadth()
{
return breadth;
}
~Rectangle();
};
Rectangle::Rectangle(int l, int b)
{
length = l;
breadth = b;
}
int Rectangle::area()
{
return length * breadth;
}
int Rectangle::perimeter()
{
return 2 * (length + breadth);
}
Rectangle::~Rectangle()
{
}
int main()
{
Rectangle r(5, 10);
cout << r.area() << endl;
cout << r.perimeter() << endl;
r.setlength(30);
r.getlength();
r.setbreadth(15);
r.getbreadth();
cout << "After corrrecting length and breadth:" << '\n';
cout << r.area() << endl;
cout << r.perimeter() << endl;
return 0;
}
Rectangle::Rectangle(int l, int b) 네임스페이스를 이용하여 매개변수가 있는 생성자를 만들었고, int Rectangle::area(), int Rectangle::perimeter()와 같이 반환형이 있는 함수를 외부에 정의하였다.#include <iostream>
using namespace std;
#ifndef RECT_H
#define RECT_H
class Rectangle
{
private:
int length;
int breadth;
public:
Rectangle() { length = breadth = 0; }
Rectangle(int, int);
int area();
int perimeter();
void setlength(int l)
{
length = l;
}
int getlength()
{
return length;
}
void setbreadth(int b)
{
breadth = b;
}
int getbreadth()
{
return breadth;
}
~Rectangle();
};
#endif
#include <iostream>
#include "Rectangle.h"
Rectangle::Rectangle(int l, int b)
{
length = l;
breadth = b;
}
int Rectangle::area()
{
return length * breadth;
}
int Rectangle::perimeter()
{
return 2 * (length + breadth);
}
Rectangle::~Rectangle()
{
}
#include <iostream>
#include "Rectangle.h"
using namespace std;
int main()
{
Rectangle r(5, 10);
cout << r.area() << endl;
cout << r.perimeter() << endl;
r.setlength(30);
r.getlength();
r.setbreadth(15);
r.getbreadth();
cout << "After corrrecting length and breadth:" << '\n';
cout << r.area() << endl;
cout << r.perimeter() << endl;
return 0;
}