Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

C → C++ 본문

C & C++/C++ Basic

C → C++

snd-snd 2019. 9. 16. 00:00

참고도서

최호성 - 이것이 C++이다 (한빛미디어)


1. 입출력

 

1) std::cout

 std 네임스페이스에 속한 cout 객체는 iostream 클래스의 인스턴스로 printf() 함수와 같이 자료형을 명시해주지 않아도

그냥 출력하고싶은 데이터를 cout으로 보내면 알아서 자료형을 찾아서 출력해준다.

 

2) std::cin

 cout과 마찬가지로 자료형을 명시하지 않아도 되며, cout과 반대로 입력방법을 제공한다.

 

#include "pch.h"
#include <iostream>
#include <string>

int main() {

	int value;
	std::string str;

	std::cin >> value;
	std::cin >> str;

	std::cout << "Hello World!" << std::endl;
	std::cout << 10000 << std::endl;
	std::cout << value << std::endl;
	std::cout << str << std::endl;
	

	return 0;
}

 

 

2. 메모리 동적 할당

 

 기존의 C의 문법에서는 malloc() 함수와 free() 함수를 이용해 메모리를 동적 할당/제거 했으나 C++에서는

new, delete 연산자를 이용해 메모리를 관리하게 된다. 이 연산자들은 내부적으로 malloc()과 free()를 호출하지만,

차이점이 존재한다. new, delete 연산자는 사용시 객체의 생성자와 소멸자를 호출한다. 이는 곧 실제로 객체가

생성되고 소멸된다는 것이다. 하지만 malloc() 함수를 이용해 클래스에 대한 포인터를 생성해 메모리 동적 할당을

한다고해서 객체가 생성되는 것은 아니다. 이는 생성한 객체의 크기만큼의 메모리 공간을 확보하고 포인터에

주소를 참조하라고 입력했을 뿐이지 객체가 생성되지 않는다.

#include "pch.h"
#include <iostream>

int main() {

	int *data1 = new int();
	int *data2 = new int(100);

	std::cout << *data1 << std::endl;
	std::cout << *data2 << std::endl;
	
	delete data1;
	delete data2;

	// 배열 형태로 동적 생성
	int *data3 = new int[5];
	
	for (int i = 0; i < 5; i++) {
		data3[i] = i + 1;
		std::cout << data3[i] << " ";
	}
	//배열 형태로 동적 생성했다면 배열 형태로 삭제해야 함.
	delete[] data3;

	return 0;
}

 

※ 메모리 동적 할당시 주의사항

new 연산자를 이용해 메모리를 동적 할당했을경우 반드시 delete 연산자를 통해 동적 할당된 메모리를

제거해주어야 한다. 이를 지키지 않을 경우 메모리 누수가 발생해 장시간 구동시 리소스 고갈 현상이 발생하고,

컴퓨터의 성능저하, 오동작을 유발 시킬 수 있다..

 

 

3. 참조자 형식

 

 참조자는 자신이 참조하는 변수의 또 다른 이름이라고 할 수 있으며, 포인터와 비슷한 구조를 가지고 있지만 몇가지 차이가 있다.

 

1) 포인터는 NULL값이 존재할 수 있지만 참조하는 NULL값이 존재할 수 없다.

2) 포인터는 주소값을 입력받지만, 참조자는 변수를 입력 받는다.

3) 포인터는 참조하는 객체를 변경할 수 있으나 참조자는 불가능하다.

 

#include "pch.h"
#include <iostream>

int main() {

    int data = 10;
    int &pData = data; //data에 대한 참조변수 pData선언
    
    pData = 20; //pData의 값을 변경시 data의 값이 변한다.

    return 0; 
}


int &xData; //불가능
int &xData = 10; //불가능
int *pData = &10; //불가능

 

'C & C++ > C++ Basic' 카테고리의 다른 글

변환 생성자(Conversion Constructor)  (0) 2019.09.22
복사 생성자(Copy Constructor)  (0) 2019.09.22
클래스(Class)  (0) 2019.09.21
네임 스페이스(Namespace)  (0) 2019.09.21
디폴트 매개변수(Default Parameter)  (0) 2019.09.21
Comments