🤔 지난시간에 우리는 구조체도 call by value로 값을 그대로 복사할 수 있는 것을 알았다. 그래서 이번시간에는 call by value를 이용한 함수작성-> call by value를 이용한 구조체-> 그리고 마지막으로 class로 순서대로 변환을 할 것이다.
#include <iostream>
using namespace std;
int area(int l, int b)
{
return l * b;//call by value
}
int perimeter(int l, int b)
{
int p;
p = 2 * (l + b);
return p;//call by value
}
int main_func()
{
int length = 0, breadth = 0;
cout << "Enter Length and Breadth:";
cin >> length >> breadth;
int a = area(length, breadth);
int peri = perimeter(length, breadth);
cout << "Area:" << a << endl;
cout << "Perimeter:" << peri << endl;
return 0;
}
#include <iostream>
using namespace std;
struct Rectangle {
int length;
int breadth;
};
int area(Rectangle r1)
{
return r1.length * r1.breadth;
//call by value
}
int perimeter(Rectangle r1)
{
int p;
p = 2 * (r1.length + r1.breadth);
return p;//call by value
}
int main_st()
{
Rectangle r = { 0,0 };
cout << "Enter Length and Breadth:";
cin >> r.length >> r.breadth;
int a = area(r);
int peri = perimeter(r);
cout << "Area:" << a << endl;
cout << "Perimeter:" << peri << endl;
return 0;
}
#include <iostream>
using namespace std;
class Rectangle {
private:
int length;
int breadth;
public:
void initialize(int l, int b)//class명과 이름이 같아야 생성자 객체 생성
{
length = l;
breadth = b;
}
int area()
{
return length*breadth;
}
int perimeter()
{
int p;
p = 2 * (length+breadth);
return p;
}
};
int main()
{
Rectangle r;
int l = 0, b = 0;//initialize to zero
cout << "Enter Length and Breadth:";
cin >> l >> b;//input l, b
r.initialize(l, b);//l,b -> length, breadth
int a = r.area();
int peri = r.perimeter();
cout << "Area:" << a << endl;
cout << "Perimeter:" << peri << endl;
return 0;
}