๋ชฉ์ฐจ
- printf์ scanf๋ฅผ ๋์ ํ๋ ์ ์ถ๋ ฅ ๋ฐฉ์
- ํจ์ ์ค๋ฒ๋ก๋ฉ(Function Overloading)
- ๋งค๊ฐ๋ณ์์ ๋ํดํธ ๊ฐ(Default Value)
- ์ธ๋ผ์ธ(inline) ํจ์
- ์ด๋ฆ ๊ณต๊ฐ(namespace)์ ๋ํ ์๊ฐ
1. printf์ scanf๋ฅผ ๋์ ํ๋ ์ ์ถ๋ ฅ ๋ฐฉ์
[c++ ๋ฒ์ ์ Hello World ์ถ๋ ฅ ํ๋ก๊ทธ๋จ]
โป ํค๋ ํ์ผ์ ์ ์ธ: #include <iostream>
โป ์ถ๋ ฅ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ: std::cout<<'์ถ๋ ฅ ๋์ 1'<<'์ถ๋ ฅ ๋์ 2'<<'์ถ๋ ฅ ๋์ 3';
โป ๊ฐํ: std::endl
→ C์ธ์ด์์๋ ์ถ๋ ฅ์ ๋์์ ๋ฐ๋ผ ์์ ์ง์ ์ด ๋ฌ๋ฆฌํ์ง๋ง, C++์์๋ ๊ทธ๋ฌํ ๊ณผ์ ์ด ๋ถํ์.
[scanf๋ฅผ ๋์ ํ๋ ๋ฐ์ดํฐ ์ ๋ ฅ]
โป ์ ๋ ฅ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ: std::cin>>'๋ณ์'
→ ํจ์์ ์ค๊ฐ ๋ถ๋ถ์์๋ ๋ณ์์ ์ ์ธ์ด ๊ฐ๋ฅํ๋ค.
#include <iostream>
int main(void) {
int val1;
std::cout<<"์ฒซ๋ฒ์งธ ์ซ์์
๋ ฅ: ";
std::cin>>val1;
int val2;
std::cout<<"๋๋ฒ์งธ ์ซ์์
๋ ฅ: ";
std::cin>>val2;
int result=val1+val2;
std::cout<<"๋ง์
๊ฒฐ๊ณผ: "<<result<<std::endl;
return 0;
}
[C++์ ์ง์ญ๋ณ์ ์ ์ธ]
#include <iostream>
int main(void) {
int val1, val2;
int result = 0;
std::cout<<"๋ ๊ฐ์ ์ซ์์
๋ ฅ: ";
std::cin>>val1>>val2;
if(val1<val2){
for(int i=val1+1; i<val2; i++)
result+=i;
}
else{
for(int i=val2+1; i<val1; i++)
result+=i;
}
std::cout<<"๋ ์ ์ฌ์ด์ ์ ์ ํฉ: "<<result<<std::endl;
return 0;
}
๋ ๊ฐ์ ์ซ์์
๋ ฅ: 3 7
๋ ์ ์ฌ์ด์ ์ ์ ํฉ: 15
- for๋ฌธ ์์์๋ ๋ณ์์ ์ ์ธ์ด ๊ฐ๋ฅํ๋ค.
- std::cin์ ํตํด์ ์ ๋ ฅ๋๋ ๋ฐ์ดํฐ์ ๊ตฌ๋ถ์ ์คํ์ด์ค ๋ฐ, ์ํฐ, ํญ๊ณผ ๊ฐ์ ๊ณต๋ฐฑ์ ํตํด์ ์ด๋ค์ง๋ค.
[๋ฐฐ์ด ๊ธฐ๋ฐ์ ๋ฌธ์์ด ์ ์ถ๋ ฅ]
#include <iostream>
int main(void) {
char name[100];
char lang[200];
std::cout<<"์ด๋ฆ์ ๋ฌด์์
๋๊น? ";
std::cin>>name;
std::cout<<"์ข
์ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ฌด์์ธ๊ฐ์? ";
std::cin>>lang;
std::cout<<"๋ด ์ด๋ฆ์ "<<name<<"์
๋๋ค. \n";
std::cout<<"์ ์ผ ์ข์ํ๋ ์ธ์ด๋ "<<lang<<"์
๋๋ค."<<std::endl;
return 0;
}
์ด๋ฆ์ ๋ฌด์์
๋๊น? ์ ๋น
์ข์ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ฌด์์ธ๊ฐ์? C++
๋ด ์ด๋ฆ์ ์ ๋น์
๋๋ค.
์ ์ผ ์ข์ํ๋ ์ธ์ด๋ C++์
๋๋ค.
2. ํจ์ ์ค๋ฒ๋ก๋ฉ(Function Overloading)
[ํจ์ ์ค๋ฒ๋ก๋ฉ์ ์ดํด]
โถ C++์ ํจ์ ํธ์ถ ์ 'ํจ์์ ์ด๋ฆ'๊ณผ '์ ๋ฌ๋๋ ์ธ์์ ์ ๋ณด'๋ฅผ ๋์์ ์ฐธ์กฐํ์ฌ ํธ์ถํ ํจ์๋ฅผ ๊ฒฐ์
๋งค๊ฐ๋ณ์์ ์ ์ธ์ด ๋ค๋ฅด๋ค๋ฉด ๋์ผํ ์ด๋ฆ์ ํจ์๋ ์ ์ ๊ฐ๋ฅํ๋ค.
์ด๋ฌํ ํํ์ ํจ์ ์ ์ → ํจ์ ์ค๋ฒ๋ก๋ฉ(Function Overloading)
#include <iostream>
int MyFunc(int num){
num++;
return num;
}
int MyFunc(int a, int b){
return a+b;
}
int main(void) {
MyFunc(20); //MyFunc(int num) ํจ์์ ํธ์ถ
MyFunc(30, 40); //MyFunc(int a, int b) ํจ์์ ํธ์ถ
return 0;
}
[ํจ์ ์ค๋ฒ ๋ก๋ฉ์ ์]
int MyFunc(char c){...}
int MyFunc(int n){...}
→ ๋งค๊ฐ๋ณ์์ ์๋ฃํ์ด ๋ค๋ฅด๋ฏ๋ก ํจ์ ์ค๋ฒ๋ก๋ฉ ์ฑ๋ฆฝ
int MyFunc(int n){...}
int MyFunc(int n1, int n2){...}
→ ๋งค๊ฐ๋ณ์์ ์๊ฐ ๋ค๋ฅด๋ฏ๋ก ํจ์ ์ค๋ฒ๋ก๋ฉ ์ฑ๋ฆฝ
void MyFunc(int n){...}
int MyFunc(int n){...}
→ ๋ฐํํ์ ์ฐจ์ด๋ ํจ์ ์ค๋ฒ ๋ก๋ฉ์ ์กฐ๊ฑด์ ์ฑ๋ฆฝ X
3. ๋งค๊ฐ๋ณ์์ ๋ํดํธ ๊ฐ
[๋งค๊ฐ๋ณ์์ ์ค์ ํ๋ '๋ํดํธ ๊ฐ'์ ์๋ฏธ]
int MyFunc(int num=7){
return num+1;
}
→ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด 7์ด ์ ๋ฌ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค.
์ฌ๊ธฐ์์ ๋ํดํธ ๊ฐ์ 7, ๋ฐ๋ผ์ MyFunc();์ MyFunc(7)์ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
int MyFunc(int num1=5, int num2=7){
return num1+num2;
}
→ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด ๊ฐ๊ฐ 5์ 7์ด ์ ๋ฌ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ๋ค.
๋ฐ๋ผ์ MyFunc();์ MyFunc(5,7)์ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
[๋ํดํธ ๊ฐ์ ํจ์์ ์ ์ธ์๋ง ์์น]
#include <iostream>
int Adder(int num1=1, int num2=2);
int main(void) {
std::cout<<Adder()<<std::endl;
std::cout<<Adder(5)<<std::endl;
std::cout<<Adder(3, 5)<<std::endl;
return 0;
}
int Adder(int num1, int num2){
return num1+num2;
}
3
7
8
โป ํจ์์ ์ ์ธ์ ๋ณ๋ก๋ ๋ ๋์๋ ๋ํดํธ ๊ฐ์ ์ ์ธ์ ํจ์์ ์ ์ธ๋ถ์ ์์น์์ผ์ผ ํ๋ค.
์ปดํ์ผ๋ฌ๋ ํจ์์ ๋ํดํธ ๊ฐ์ ์ง์ ์ฌ๋ถ๋ฅผ ์์์ผ ํจ์์ ํธ์ถ ๋ฌธ์ฅ์ ์ ์ ํ ์ปดํ์ผํ ์ ์๋ค.
[๋ถ๋ถ์ ๋ํดํธ ๊ฐ ์ค์ ]
int YourFunc(int num1, int num2=5, int num3=7){...}
YourFunc(10); //YourFunc(10, 5, 7);
YourFunc(10, 20); //YourFunc(10, 10, 7);
→ ๋งค๊ฐ๋ณ์์ ์ผ๋ถ์๋ง ๋ํดํธ ๊ฐ์ ์ง์ ํ๊ณ , ์ฑ์์ง์ง ์์ ๋งค๊ฐ๋ณ์์๋ง ์ธ์๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
int YourFunc(int num1, int num2, int num3=30) {...} (o)
int YourFunc(int num1, int num2=20, int num3=30) {...} (o)
int YourFunc(int num1=10, int num2=20, int num3=30) {...} (o)
→ ์ ๋ฌ๋๋ ์ธ์๊ฐ ์ผ์ชฝ์์๋ถํฐ ์ฑ์์ง๋ฏ๋ก, ๋ํดํธ ๊ฐ์ ์ค๋ฅธ์ชฝ์์๋ถํฐ ์ฑ์์ ธ์ผ ํ๋ค.
int WrongFunc(int num1=10, int num2, int num3) {...} (x)
int WrongFunc(int num1=10, int num2=20, int num3) {...} (x)
→ ์ ๋ฌ๋๋ ์ธ์๊ฐ ์ผ์ชฝ์์๋ถํฐ ์ฑ์์ง๋ฏ๋ก, ์ค๋ฅธ์ชฝ์ด ๋น ์ํ๋ก ์ผ์ชฝ์ ๋งค๊ฐ๋ณ์์๋ง ์ผ๋ถ ์ฑ์์ง ๋ํดํธ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ ์ปดํ์ผ ์๋ฌ๋ฅผ ์ผ์ผํจ๋ค.
4. ์ธ๋ผ์ธ(inline) ํจ์
[๋งคํฌ๋ก ํจ์์ ์ฅ์ ๊ณผ ํจ์์ inline ์ ์ธ]
#define SQUARE(x) ((x)*(x))
int main(void) {
std::cout << SQUARE(5) << std::endl;
return 0;
}
↓ ์ ํ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ
int main(void) {
std::cout << ((5)*(5)) << std::endl;
return 0;
}
- ์ฅ์ : ํจ์๊ฐ ์ธ๋ผ์ธํ๋์ด ์ฑ๋ฅ์ ํฅ์์ผ๋ก ์ด์ด์ง ์ ์๋ค.
- ๋จ์ : ํจ์์ ์ ์ ๋ฐฉ์์ด ์ผ๋ฐ ํจ์์ ๋นํด์ ๋ณต์กํ๋ค. ๋ฐ๋ผ์ ๋ณต์กํ ํจ์์ ์ ์์๋ ํ๊ณ๊ฐ ์๋ค.
inline ํ์ ํจ์์ด๋ฆ(๋งค๊ฐ๋ณ์) {
์ ์....
}
inline int SQUARE(int x){
return x*x;
}
int main(void) {
std::cout << SQUARE(5) << std::endl;
std::cout << SQUARE(12) << std::endl;
return 0;
}
25
144
- ํค์๋ inline ์ ์ธ์ ์ปดํ์ผ๋ฌ์ ์ํด์ ์ฒ๋ฆฌ๋๋ค. ๋ฐ๋ผ์ ์ปดํ์ผ๋ฌ๊ฐ ํจ์์ ์ธ๋ผ์ธํ๋ฅผ ๊ฒฐ์ ํ๋ค.
- inline ์ ์ธ์ด ๋์ด๋ ์ธ๋ผ์ธ ์ฒ๋ฆฌ๋์ง ์์ ์ ์๊ณ , inline ์ ์ธ์ด ์์ด๋ ์ธ๋ผ์ธ ์ฒ๋ฆฌ๋ ์ ์๋ค.
- ๋งคํฌ๋ก ํจ์์ ์ฅ์ ์ ์ทจํ๊ณ ๋จ์ ์ ๋ณด์ํ ๊ฒ์ด C++์ ์ธ๋ผ์ธ ํจ์์ด๋ค.
[์ธ๋ผ์ธ ํจ์์๋ ์๋ ๋งคํฌ๋ก ํจ์๋ง์ ์ฅ์ ]
#define SQUARE(x) ((x)*(x))
↓ ๋งคํฌ๋ก ํจ์๋ ์๋ฃํ์ ๋ ๋ฆฝ์ ์ด๋ค.
std::cout<< SQUARE(12); //intํ ํจ์ํธ์ถ
std::cout<< SQUARE(3.15); //doubleํ ํจ์ํธ์ถ
โป inline ์ ์ธ๋ ํจ์๋ฅผ ์์ ํํ๋ก ํธ์ถํ๋ ค๋ฉด, ๊ฐ ์๋ฃํ ๋ณ๋ก ํจ์๊ฐ ์ค๋ฒ๋ก๋ฉ๋์ด์ผ ํ๋ค.
์ฆ, ๋งคํฌ๋ก ํจ์์ ๋ฌ๋ฆฌ ์๋ฃํ์ ๋ ๋ฆฝ์ ์ด์ง ๋ชปํ๋ค.
- inline int SQUARE(int x) { return x*x; }
- intํ ๊ธฐ๋ฐ์ผ๋ก ์ ์๋ ํจ์์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํ ์ ์๋ค.
5.์ด๋ฆ ๊ณต๊ฐ์ ๋ํ ์๊ฐ
[์ด๋ฆ ๊ณต๊ฐ์ ๊ธฐ๋ณธ ์๋ฆฌ]
namespace BestComImpl
{
// ์ด๋ฆ๊ณต๊ฐ ๋ด๋ถ
}
namespace BestComImpl{
void SimpleFunc(void){
std::cout<<"BestCom์ด ์ ์ํ ํจ์"<<std::endl;
}
}
namespace ProgComImpl{
void SimpleFunc(void){
std::cout<<"ProgCom์ด ์ ์ํ ํจ์"<<std::endl;
}
}
int main(void) {
BestComImpl::SimpleFunc(); //์ด๋ฆ๊ณต๊ฐ BestComImpl์ ์ ์๋ SimpleFunc์ ํธ์ถ
ProgComImpl::SimpleFunc(); //์ด๋ฆ๊ณต๊ฐ ProgComImpl์ ์ ์๋ SimpleFunc์ ํธ์ถ
return 0;
}
- ์กด์ฌํ๋ ์ด๋ฆ ๊ณต๊ฐ์ด ๋ค๋ฅด๋ฉด ๋์ผํ ์ด๋ฆ์ ํจ์ ๋ฐ ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
- ํ๋ก์ ํธ์ ์งํ์ ์์ด์ ๋ฐ์ํ ์ ์๋ ์ด๋ฆ์ ์ถฉ๋์ ๋ง์ ๋ชฉ์ ์ผ๋ก ์กด์ฌํ๋ ๊ฒ์ด ์ด๋ฆ ๊ณต๊ฐ์ด๋ค.
- โป๋ฒ์ ์ง์ ์ฐ์ฐ์: ::
- ์ด๋ฆ๊ณต๊ฐ :: ํจ์();
[์ด๋ฆ ๊ณต๊ฐ ๊ธฐ๋ฐ์ ํจ์ ์ ์ธ๊ณผ ์ ์์ ๋ถ๋ฆฌ]
namespace BestComImpl{
void SimpleFunc(void); // ์ด๋ฆ๊ณต๊ฐ ์์ฑ, ํจ์ ์ ์ธ
}
namespace ProgComImpl{
void SimpleFunc(void);
}
int main(void) {
BestComImpl::SimpleFunc();
ProgComImpl::SimpleFunc(); // ์ด๋ฆ๊ณต๊ฐ ํจ์ ํธ์ถ
return 0;
}
// ํจ์ ์ ์
void BestComImpl::SimpleFunc(void){
std::cout<<"BestCom์ด ์ ์ํ ํจ์"<<std::endl;
}
void ProgComImpl::SimpleFunc(void){
std::cout<<"ProgCom์ด ์ ์ํ ํจ์"<<std::endl;
}
→ ์ด๋ฆ ๊ณต๊ฐ BestComImpl์ ์์นํ๋ ํจ์ SimpleFunc์ ์ ์ธ๊ณผ ์ ์์ ๋ถ๋ฆฌ
→ ์ด๋ฆ ๊ณต๊ฐ ProgComImpl์ ์์นํ๋ ํจ์ SimpleFunc์ ์ ์ธ๊ณผ ์ ์์ ๋ถ๋ฆฌ
[์ด๋ฆ๊ณต๊ฐ ํจ์ ํธ์ถ]
์ด๋ฆ๊ณต๊ฐ :: ํจ์์ด๋ฆ();
[์ด๋ฆ๊ณต๊ฐ ํจ์ ์ ์]
ํ์ ์ด๋ฆ๊ณต๊ฐ::ํจ์์ด๋ฆ(๋งค๊ฐ๋ณ์){
.... ํจ์์ ์....
}
[๋์ผํ ์ด๋ฆ ๊ณต๊ฐ ๋ด์์์ ํจ์ ํธ์ถ]
namespace BestComImpl{
void SimpleFunc(void);
}
namespace BestComImpl{
void PrettyFunc(void);
}
- ์ ์ธ๋ ์ด๋ฆ ๊ณต๊ฐ์ ์ด๋ฆ์ด ๋์ผํ๋ค๋ฉด, ์ด ๋์ ๋์ผํ ์ด๋ฆ ๊ณต๊ฐ์ผ๋ก ๊ฐ์ฃผํ๋ค.
- ์ฆ, SimpleFunc์ PrettyFunc๋ ๋์ผํ ์ด๋ฆ ๊ณต๊ฐ ์์ ์กด์ฌํ๋ ์ํฉ์ด๋ค.
void BestComImpl::SimpleFunc(void){
std::cout<<"BestCom์ด ์ ์ํ ํจ์"<<std::endl;
PrettyFunc(); // ๋์ผ ์ด๋ฆ๊ณต๊ฐ
ProgComImpl::SimpleFunc(); // ๋ค๋ฅธ ์ด๋ฆ๊ณต๊ฐ
}
void BestComImpl::PrettyFunc(void){
std::cout<<"So Pretty!!"<<std::endl;
}
- ์ด๋ฆ ๊ณต๊ฐ์ ๋ช ์ํ์ง ์๊ณ ํจ์๋ฅผ ํธ์ถํ๋ฉด, ํจ์์ ํธ์ถ๋ฌธ์ด ์กด์ฌํ๋ ํจ์์ ๋์ผํ ์ด๋ฆ ๊ณต๊ฐ ์์์ ํธ์ถํ ํจ์๋ฅผ ์ฐพ๊ฒ ๋๋ค.
- ๋ฐ๋ผ์ฌ SimpleFunc ํจ์ ๋ด์์๋ ์ด๋ฆ ๊ณต๊ฐ์ ๋ช ์ํ์ง ์์ ์ํ์์ PrettyFunc ํจ์๋ฅผ ์ง์ ํธ์ถํ ์ ์๋ค.
[์ด๋ฆ ๊ณต๊ฐ์ ์ค์ฒฉ]
namespace Parent{ //์ด๋ฆ๊ณต๊ฐ Parent
int num=2; //Parent::num
namespace SubOne{ //Parent::SubOne
int num=3; //Parent::SubOne::num
}
namespace SubTwo{ //Parent::SubTwo
int num=4; //Parent::SubTwo::num
}
}
ํธ์ถ
std::cout<<Parent::num<<std::endl;
std::cout<<Parent::SubOne::num<<std::endl;
std::cout<<Parent::SubTwo::num<<std::endl;
- ์ด๋ฆ ๊ณต๊ฐ์ ์ค์ฒฉ์ด ๊ฐ๋ฅํ๋ค.
- ๋ฐ๋ผ์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฒ๋ ์ด๋ฆ ๊ณต๊ฐ์ ๊ตฌ์ฑํ ์ ์๋ค.
[std::cout, std::cin, std::endl]
std::cout → ์ด๋ฆ๊ณต๊ฐ std์ ์ ์ธ๋ cout
std::cin → ์ด๋ฆ๊ณต๊ฐ std์ ์ ์ธ๋ cin
std::endl → ์ด๋ฆ๊ณต๊ฐ std์ ์ ์ธ๋ endl
namespace std{
cout...
cin...
endl...
}
- <iostream>์ ์ ์ธ๋์ด ์๋ cout, cin ๊ทธ๋ฆฌ๊ณ endl์ ์ด๋ฆ ๊ณต๊ฐ std ์์ ์ ์ธ๋์ด ์๋ค.
- ์ด๋ ๋ฏ ์ด๋ฆ ์ถฉ๋์ ๋ง๊ธฐ ์ํด์, C++ ํ์ค์์ ์ ๊ณตํ๋ ๋ค์ํ ์์๋ค์ ์ด๋ฆ ๊ณต๊ฐ std ์์ ์ ์ธ๋์ด ์๋ค.
[using์ ์ด์ฉํ ์ด๋ฆ ๊ณต๊ฐ์ ๋ช ์]
#include <iostream>
namespace Hybrid{
void HybFunc(void){
std::cout<<"So simple function!"<<std::endl;
std::cout<<"In namespace Hybrid!"<<std::endl;
}
}
int main(void){
using Hybrid::HybFunc;
HybFunc;
return 0;
}
- using ์ ์ธ์ ํตํด์ ์ด๋ฆ๊ณต๊ฐ์ ์ง์ ์์ด HybFunc ํจ์๋ฅผ ํธ์ถํ๊ณ ์๋ค.
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main(void) {
int num=20;
cout<<"Hello World!"<<endl;
cout<<"Hello"<<"World!"<<endl;
cout<<num<<' '<<'A';
cout<<' '<<3.14<<endl;
return 0;
}
- using ์ ์ธ์ ์ ์ญ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํจ์ ๋ฐ์ ์ ์ธ์ ํด์ผ ํจ!
- ์ดํ๋ถํฐ cin, cout, endl์ std::cin, std::cout, std::endl์ ์๋ฏธํ๋ค๋ ์ ์ธ
#include <iostream>
using namespace std;
int main(void) {
int num=20;
cout<<"Hello World!"<<endl;
cout<<"Hello"<<"World!"<<endl;
cout<<num<<' '<<'A';
cout<<' '<<3.14<<endl;
return 0;
}
using namespace std;
- ์ด๋ฆ ๊ณต๊ฐ std์ ์ ์ธ๋ ๊ฒ์ std๋ผ๋ ์ด๋ฆ ๊ณต๊ฐ์ ์ ์ธ ์์ด ์ ๊ทผํ๊ฒ ๋ค๋ ์ ์ธ
โป๋๋ฌด ๋น๋ฒํ using namespace์ ์ ์ธ์ ์ด๋ฆ์ ์ถฉ๋์ ๋ง๊ธฐ ์ํ ์ด๋ฆ ๊ณต๊ฐ์ ์ ์ธ์ ์๋ฏธ ์๊ฒ ๋ง๋ ๋ค. ๋ฐ๋ผ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
[์ด๋ฆ ๊ณต๊ฐ์ ๋ณ์นญ ์ง์ ๊ณผ ์ ์ญ๋ณ์์ ์ ๊ทผ]
namespace AAA{
namespace BBB{
namespace CCC{
int num1;
int num2;
}
}
}
namespace ABC=AAA::BBB::CCC;
// AAA::BBB::CCC์ ๋ํด ACC๋ผ๋ ์ด๋ฆ์ ๋ณ์นญ ์ ์ธ ํ,
ABC::num1=10;
ABD::num2=20;
// ์์ ๊ฐ์ด ํ๋์ ๋ณ์นญ์ผ๋ก ์ด๋ฆ๊ณต๊ฐ์ ์ ์ธ์ ๋์ ํ ์ ์๋ค.
์ด๋ฆ๊ณต๊ฐ ๋ณ์นญ: namespace ABC=AAA::BBB::CCC
- ์ง์ญ๋ณ์์ ์ด๋ฆ์ด ์ ์ญ๋ณ์์ ์ด๋ฆ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ์ ์ญ๋ณ์๋ ์ง์ญ๋ณ์์ ์ํด ๊ฐ๋ ค์ง๋ค
int val=100; // ์ ์ญ๋ณ์
int SimpleFunc(void){
int val=20; // ์ง์ญ๋ณ์
val+=3; // ์ง์ญ๋ณ์ val์ ๊ฐ 3 ์ฆ๊ฐ
::val+=7; // ์ ์ญ๋ณ์ val์ ๊ฐ 7 ์ฆ๊ฐ
}
- ๋ฒ์์ง์ ์ฐ์ฐ์๋ ์ง์ญ๋ณ์๊ฐ ์๋ ์ ์ญ๋ณ์์ ์ ๊ทผ์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
int val = 100; // ์ ์ญ๋ณ์
int SimpleFunc(void){
int val = 20; // ์ง์ญ๋ณ์
val += 3; // ์ง์ญ๋ณ์ val์ ๊ฐ 3 ์ฆ๊ฐ
::val += 7; // ์ ์ญ๋ณ์ val์ ๊ฐ 7 ์ฆ๊ฐ
- ์ ์ญ๋ณ์ ์ ๊ทผ → ::๋ณ์
'ํ๋ก๊ทธ๋๋ฐ > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ดํC++]Chapter 01 - ํ๋ก๊ทธ๋๋ฐ ๋ฌธ์ (0) | 2024.08.08 |
---|