programing

c++ 강의 9/11

말뚝_2 2014. 9. 11. 14:52

iostream - Input Output stream :

c언어의 stdio 에 대응


cout,cin - C-output, C-input :

 outpu과 input, 즉 출력과 입력을 의미하며 << (쉬프트 연산자)와 함께 사용된다. 


쉬프트 연산자 - << :

 해당 쉬프트 연산이 가리키는 방향으로 값을 넣어준다고 이해하자.

예를들어 A << B 라면 A에 B의 값을 인자로 넘겨 A를 호출한다고 생각할 수 있다.


std:cout << " A + 3 = " <<  a+3 << std::endl;


 또한 기존 c언어 문법에서 사용하던 %d나%c 같은 서식문자를 사용하여 변수를 호출하는 대신, << 쉬프트 연산자를이용하여 변수나 함수, 연산식을 바로바로 호출할 수 있다.


std- Standard

 '일반적이다' 라고 이해하면 될것같고, std::cout 와 같은 형태로 사용된다, 죽 이어서 읽어본다면 Standard C output 이 되며 출함수로 c언어의 printf 에 대응된다.


C언어와 마찬가지로 std::cout (printf) 에서 함수의 리턴값을 호출하거나 연산식의 호출 또한 가능하다.


std:cout << "n+5 =" << n+5;

 

Namespace-이름공간:

이름충돌이 발생하는 경우 - 여러명이 서로 나누어 프로젝트를개발하거나, 오픈소스&다른사람이 작성한 코드나 목적파일을 가져와 컴파일 하거나 링크하는 경우에 주로 발생한다.using naemespace std; 라는 코드를 통해 이후의 namespace에 일일히 std를 입력하지 않아도 이름공간에 std가 저절로 들어가게 해줄 수 있다. 또한 namespace는 변수명이나 구조체, 함수처럼 선언하여 사용하는것이 가능하다.


namespace hello {

int a=3;

 int b=4;

} // hi::a, hi::b 와 같은 형태로 이름공간 내의 변수 선언, 호출이 가능하다.

using namespace std; // std 이름공간을 사용하겟다고 선언

int main(){


cout << "a값 : " << hello::a <<"b 값 : "<< hello ::b << '\n';


}


변수의 선언 : 

절차지향적인 c언어에서는 변수의 선언이 함수나 프로그램의 상단에서 이루어져야 했다면, 객체지향적인 C++언어에서는 변수의 선언이 함수나 프로그램의 상단에서 할 필요 없이 프로그램이 진행되는곳 어디에서나 가능하다.


연습문제1:

#include <iostream>

using namespace std;

namespace network{

int count;


void Test()

{

 cout << "\n 통신을 테스트 합니다."<<endl ;

};

}


namespace Data{

int count;


void Test()

{

 cout << "\n 데이터 처리 작업을 수행합니다. "<<endl ;

};

}



int main()

{

cout << "통신 횟수 입력 : " ;

cin >> network::count;

cout << "\n데이터 처리 횟수 입력 : ";

cin >> Data::count;

int count;


for(count=0;count!=network::count;count++)

network::Test();


for(count=0;count!=Data::count;count++)

Data::Test();

cout << "\n";

return 0;

}


연습문제 2:

#include <iostream>

using namespace std;


namespace Vals{

namespace Valin{

int n1;

};

int n2;

};



namespace Sum{

int CalFunc(int n1,int n2)

{

return n1+n2;

};


};


namespace Minus{

int CalFunc(int n1,int n2)

{

return n1-n2;

};


};



int main()

{

cout << "값1 : ";

cin >> Vals::n2;

cout << "값2 : ";

cin >> Vals::Valin::n1;


Sum::CalFunc(Vals::n2,Vals::Valin::n1);

cout<<"Minus = " << Minus::CalFunc(Vals::n2, Vals::Valin::n1) << endl;


}


c언어와는 약간 다른 생소한 방식의 c++ 언어이지만, 기본적으로는 c언어의 문법을 그대로 가져다 쓰는것이 많고, c언어에서 파생되어 나왔기 때문인지 c언어와 많은 부분이 닮아있었다. 기존 c언어의 지식을 얼마나 잘 활용하느냐가 c++언어를 익히는데에 중요하게 작용할 것 같다.