참조 변수
#include <iostream>
using namespace std;
int main() {
//참조(reference)란?
//미리 정의된 변수의 실제 이름 대신 사용
//함수의 매개변수에 사용
//함수의 매개변수에 구조체를 선언하면 c++은 구조체의 원본이 아니라 복사본에 대해 작업을 한다.
//참조를 매개변수로 사용하면 원본의 데이터를 갖고 작업
//구조체의 볼륨이 크면 포인터 대신 참조를 사용하는것이 유리
int a;
int& b = a;
//주소 연산자인 동시에 참조 연산자이다.
//여기서는 데이터형의 식별자로 사용
//참조변수의 방식으로 전달하는것을 참조로 전달한다고 한다.
return 0;
}
참조를 매개변수로 사용하면 원본의 데이터를 갖고 작업할 수 있다.
#include <iostream>
using namespace std;
void swapA(int&, int&);
void swapB(int*, int*);
void swapC(int, int);
int main() {
int wallet1 = 100;
int wallet2 = 200;
cout << "최초 상태" << endl;
cout << "wallet1 = " << wallet1 << ", wallet2 = " << wallet2 << endl;
cout << "\n참조를 이용한 값의 교환\n";
swapA(wallet1, wallet2);
cout << "참조 교환 이후 상태\n";
cout << "wallet1 = " << wallet1 << ", wallet2 = " << wallet2 << endl;
cout << "\n포인터를 이용한 값의 교환\n";
swapB(&wallet1, &wallet2);
cout << "포인터를 이용한 교환 이후 상태\n";
cout << "wallet1 = " << wallet1 << ", wallet2 = " << wallet2 << endl;
cout << "\n값을 이용한 값의 교환\n";
swapC(wallet1, wallet2);
cout << "값을 이용한 교환 이후 상태\n";
cout << "wallet1 = " << wallet1 << ", wallet2 = " << wallet2 << endl;
return 0;
}
void swapA(int& a, int& b) {
int temp;
temp = a;
a = b;
b = temp;
}
void swapB(int* a, int* b) {
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void swapC(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
}
함수 템플릿
#include <iostream>
using namespace std;
//class 혹은 typeName
template <class Any>
Any sum(Any, Any);
int main() {
//함수 템플릿
//구체적인 데이터형을 포괄할 수 있는 일반형으로 함수를 정의
//어떤 데이터형을 템플릿형의 매개변수로 전달하면 컴파일러가 그 데이터형에 맞는 함수를 생성한다.
//데이터형에 상관없이 일반적으로 사용할 수 있는 함수를 만드는것==>일반화
int a = 3;
int b = 4;
cout << sum(a, b) << endl;
float c = 3.14;
float d = 1.592;
cout << sum(c, d) << endl;
cout << sum(a, c) << endl;
return 0;
}
template <class Any>
Any sum(Any a,Any b){
return a+b;
}
#include <iostream>
using namespace std;
//class 혹은 typeName
template <class Any>
Any sum(Any, Any);
template <class Any>
Any sum(int, Any);
int main() {
//함수 템플릿
//구체적인 데이터형을 포괄할 수 있는 일반형으로 함수를 정의
//어떤 데이터형을 템플릿형의 매개변수로 전달하면 컴파일러가 그 데이터형에 맞는 함수를 생성한다.
//데이터형에 상관없이 일반적으로 사용할 수 있는 함수를 만드는것==>일반화
int a = 3;
int b = 4;
cout << sum(a, b) << endl;
float c = 3.14;
float d = 1.592;
cout << sum(c, d) << endl;
cout << sum(a, c) << endl;
return 0;
}
template <class Any>
Any sum(Any a,Any b){
return a+b;
}
template <class Any>
Any sum(int a, Any b) {
return a + b;
}
#include <iostream>
using namespace std;
//class 혹은 typeName
template <class Any>
Any sum(Any, Any);
template <class Any>
Any sum(int, Any);
int main() {
//함수 템플릿
//구체적인 데이터형을 포괄할 수 있는 일반형으로 함수를 정의
//어떤 데이터형을 템플릿형의 매개변수로 전달하면 컴파일러가 그 데이터형에 맞는 함수를 생성한다.
//데이터형에 상관없이 일반적으로 사용할 수 있는 함수를 만드는것==>일반화
int a = 3;
int b = 4;
//cout << sum(a, b) << endl;
float c = 3.14;
float d = 1.592;
cout << sum(c, d) << endl;
cout << sum(a, c) << endl;
return 0;
}
template <class Any>
Any sum(Any a,Any b){
return a+b;
}
template <class Any>
Any sum(int a, Any b) {
return a + b;
}
'[C++]코딩연습장' 카테고리의 다른 글
C++ [클래스] (0) | 2021.02.22 |
---|---|
C++ [분할컴파일] (0) | 2021.02.22 |
C++ [Function] (0) | 2021.02.21 |
C++ [포인터와 메모리 해제] [포인터 연산] [동적 구조체] (0) | 2021.02.21 |
C++ [구조체] (0) | 2021.02.21 |