예시)
#include <iostream>
#include <string>
using namespace std;
/* 출력
9 2
*/
void swap(int& a, int& b) {
int tmp = a;
a = b;
b = tmp;
}
int main() {
int m = 2, n = 9;
swap(m, n);
cout << m << " " << n;
}
#include <iostream>
#include <string>
using namespace std;
/*
출력
평균은 2
매개 변수 오류
*/
bool average(int a[], int size, int& avg) {
if (size <= 0) {
return false;
}
int sum = 0;
for (int i = 0; i < size; i++) {
sum += a[i];
}
avg = sum / size;
return true;
}
int main() {
int x[] = {0,1,2,3,4,5};
int avg;
if (average(x, 6, avg)) {
cout << "평균은 " << avg << endl;
}
else
{
cout << "매개 변수 오류" << endl;
}
if (average(x, -2, avg)) {
cout << "평균은 " << avg << endl;
}
else
{
cout << "매개 변수 오류" << endl;
}
}
#include <iostream>
#include <string>
using namespace std;
/*
출력
생성자 실행 radius = 30
31
소멸자 실행 radius = 31
*/
class Circle {
private:
int radius;
public:
Circle() :Circle(1) {}
Circle(int radius) {
this->radius = radius;
cout << "생성자 실행 radius = " << radius << endl;
}
~Circle() {
cout << "소멸자 실행 radius = " << radius << endl;
}
double getArea() { return 3.14 * radius * radius; }
int getRadius() { return radius; }
void setRadius(int radius) { this->radius = radius; }
};
void increaseCircle(Circle& c) {
int r = c.getRadius();
c.setRadius(r + 1);
}
int main() {
Circle ring(30);
increaseCircle(ring);
cout << ring.getRadius() << endl;
}
#include <iostream>
#include <string>
using namespace std;
/*
출력
Mike
Sike
Site
*/
char& find(char s[], int index) {
return s[index];
}
int main() {
char name[] = "Mike";
cout << name << endl;
find(name, 0) = 'S';
cout << name << endl;
char& ref = find(name, 2);
ref = 't';
cout << name << endl;
}
특징
#include <iostream>
#include <string>
using namespace std;
/*
출력
복사 생성자 실행 radius = 30
원본의 면적 = 2826
사본의 면적 = 2826
*/
class Circle {
private:
int radius;
public:
Circle(const Circle& c);
Circle() :Circle(1) {}
Circle(int radius) {
this->radius = radius;
}
double getArea() { return 3.14 * radius * radius; }
};
Circle::Circle(const Circle& c) {
this->radius = c.radius;
cout << "복사 생성자 실행 radius = " << radius << endl;
}
int main() {
Circle src(30);
Circle dest(src);
cout << "원본의 면적 = " << src.getArea() << endl;
cout << "사본의 면적 = " << dest.getArea() << endl;
}
함수 중복의 예)
#include <iostream>
#include <string>
using namespace std;
/*
출력
두 수 중 큰 수는 7
배열에서 가장 큰 수는 10
*/
int compare(int a, int b) {
if (a > b) return a;
else return b;
}
int compare(int a[], int size) {
int result = a[0];
for (int i = 1; i < size; i++) {
if (result < a[i]) {
result = a[i];
}
return result;
}
}
int main() {
int array[5] = { 2,10,7,8,5 };
cout << "두 수 중 큰 수는 " << compare(5, 7) << endl;
cout << "배열에서 가장 큰 수는 " << compare(array, 5) << endl;
}
예시.
#include <iostream>
#include <string>
using namespace std;
/*
출력
***
*****
5
10 Hellow
*/
void drawStar(int a = 3) {
for (int i = 0; i < a; i++)
cout << "*";
cout << endl;
}
void msg(int id, string text = "") {
cout << id << ' ' << text << endl;
}
int main() {
drawStar();
drawStar(5);
msg(5);
msg(10, "Hellow");
}