C++의 기초적인 사용법

윤형찬·2020년 10월 26일
0

C++

목록 보기
1/10
post-thumbnail

입출력 스트림

  • 일반적으로 C++의 표준 라이브러리 중 하나인 iostream이라는 헤더파일을 사용한다.
  • std라는 namespace 안의 cout과 cin을 이용한다.
  • using namespace std; : std namespace 사용시 계속 typing하지 않아도 된다.

예제

#include <iostream> 

int main()
{
	int x = 1024;
	double pi = 3.141592;

	std::cout << "I love this lecture!\n" << std::endl;
	std::cout << "x is " << x << " pi is " << pi << std::endl;

	using namespace std;
	cout << "abc" << "\t" << "def" << endl;
	cout << "ab" << "\t" << "cdef\n" << endl;

	// Input Exercising
	int origin = 1;
	cout << "Before you input, origin was " << origin << endl;
	cout << "input any number : ";
	cin >> origin;

	cout << "origin has changed to " << origin << endl;

	return 0;
}

I love this lecture!

x is 1024 pi is 3.14159
abc def
ab cdef

Before you input, origin was 1
input any number : 5
origin has changed to 5



함수

  • return 할 자료형에 맞게 함수를 생성한다
  • 한 cpp 폴더에 작성할 때 선언과 정의를 분리하는 것이 좋다.

예제

#include <iostream>

using namespace std;

int add(int a, int b); // forward declaration
int multiply(int a, int b);
int subtract(int a, int b);

int main() {
	cout << add(1, 2) << endl;
	cout << subtract(1, 2) << endl;

	return 0;
}

// definition
int add(int a, int b)
{
	return a + b;
}

int multiply(int a, int b)
{
	return a * b;
}

int subtract(int a, int b)
{
	return a - b;
}


헤더 파일 만들기

  • 효과적으로 코드를 재사용 하기 위해 파일을 분리하는것이 좋다.
  • Solution 내에 Header file 폴더에 생성한다.
  • 헤더에는 선언만, 정의는 새로운 cpp파일에 하는 것이 좋다.
  • include "경로" 로 호출한다.

예제

exer.cpp

#include <iostream>
#include "add.h"
//#include "MyHeaders/add.h"
using namespace std;

int main()
{
	cout << add(1, 2) << endl;

	return 0;
}

add.h

#pragma once

int add(int x, int y);

add.cpp

int add(int x, int y)
{
	return x + y;
}

3



헤더가드가 필요한 이유

  1. main 함수가 들어있는 exer.cpp와 헤더파일 2개 my_work.h, add.h 를 만들었다고 가정
  2. my_work.h 에서는 add.h 를 호출하여 add라는 함수 생성
  3. exer.cpp에서 my_work.h와 add.h를 둘 다 호출하면 "add" 함수가 두번 호출된 격이다.
  4. 그래서 linking error가 발생한다.

-> 이를 방지하기 위해 헤더가드가 필요하다.

"헤더파일 가장 상단에 #pragma once 를 typing 해주면 된다."

예제

exer.cpp

#include <iostream>
#include "my_work.h"
#include "add.h"

using namespace std;

int main()
{
	doSomething();

	return 0;
}

my_work.h

#pragma once

#include "add.h"

void doSomething()
{
	add(1, 2);
}

add.h

#pragma once

int add(int a, int b)
{
	return a + b;
}


네임스페이스

  • 임의로 만든 함수여도 namespace를 사용할 수 있다.

예제

#include <iostream>

namespace MySpace1
{
	namespace InnerSpace
	{
		int my_funtion()
		{
			return 0;
		}
	}
	int doSomething(int a, int b)
	{
		return a + b;
	}
}
namespace MySpace2
{
	int doSomething(int a, int b)
	{
		return a * b;
	}
}


using namespace std;

int main()
{
	using namespace MySpace1;
	doSomething(1, 2);

	using namespace MySpace1::InnerSpace;
	my_funtion();

	//cout << MySpace1::doSomething(3, 4) << endl;
	//cout << doSomething(3, 4) << endl;


	return 0;
}
  • 실행되는 doSomething()은 MySpace1의 doSomeThing이다.
  • MySpace1::InnerSpace 도 한번에 생략 가능하다.

profile
https://github.com/velmash

0개의 댓글