C++87 C++ 기초 : namespace와 입출력 구현 (cout, cin) C에서는 printf를 통해 출력을 하였죠. C++에서는 cout이라는 키워드를 통해 출력을 할 수 있습니다. "iostream"이라는 파일을 포함시킨 후 사용할 수 있습니다. 마지막에 std::endl은 개행 문자 '\n'와 같은 역할을 합니다. 실행을 해 보니 숫자와 문자 모두 잘 출력되네요. 또한 C에서는 scanf_s를 통해 입력을 받았죠? C++에서는 cin을 통해 입력을 받을 수 있습니다. 마찬가지로 "iostream"이라는 파일을 포함시킨 후사용할 수 있습니다. 0으로 초기화된 변수 a에cin을 통해 100을 입력한 후 값을 확인해 보니 100이 대입된 것을 확인할 수 있네요. 그런데 cout, cin, end.. 2024. 4. 19. C++ 기초 : 클래스 템플릿을 이용한 리스트 구현 기존의 구조체로 만들었던 연결형 리스트를클래스 템플릿을 이용하여 구현하겠습니다. 먼저 cList.h 파일을 만들고 cList라는 클래스 템플릿과 tListNode라는 구조체 템플릿을 만들었습니다. C++에서는 사실 구조체와 클래스와의 차이가 없습니다. 작은 차이라면 구조체는 아무 키워드도 적지 않으면기본적으로 public으로 선언되고클래스는 아무 키워드도 적지 않으면 기본적으로private로 선언된다는 차이 정도죠. 그래서 구조체 템플릿으로 선언된 tListNode는 사실 클래스 템플릿으로 선언해도 문제가 없습니다. 일단 클래스 템플릿 cList부터 보시죠. 첫 번째 노드의 주솟값을 저장할 멤버 pHead와마지막 노드의 주솟값을 저장할 멤버 pTail이 있습니.. 2024. 4. 17. C++ 기초 : 클래스 템플릿 int형 데이터를 저장할 수 있는 가변 배열이 있습니다.그런데 float형 데이터를 저장하는 가변 배열을 만들고자 한다면클래스를 또 만들어야 하는 번거로움이 생깁니다. 또는 어떤 객체를 저장하는 가변 배열을 구성하고 싶을 수도 있죠. 결국 가변 배열 역할을 하는 클래스의 구성은비슷하기 때문에 일일히 복사하여 클래스를 또 만들어야 하고 다른 부분은 조금씩 수정하는 형태로 진행해야겠죠. 이러한 번거로움을 해소하기 위해서는클래스도 템플릿으로 구성하면 됩니다. 가변 배열 클래스의 헤더 파일인 cArr.h로 가서 cArr 클래스를템플릿으로 선언해 줍니다. 이후 main.cpp에서 cArr 클래스를 통해 객체를 만드려고 하면오류가 발생합니다. 이제 일반 클래스가 아.. 2024. 4. 17. C++ 기초 : 함수 템플릿 두 수를 받아 더한 후 반환하는 Add 함수가 있습니다. 현재 int형(정수) 두 개를 받아 반환하기 때문에Add 함수를 통해 실수 계산을 하려고 하면제대로 작동하지 않을 겁니다. 그래서 아래 코드처럼 Add 함수를 오버로딩하여 같은 이름으로 하되, 해당 함수의 매개변수의 타입을 달리 하여두 실수의 합을 계산할 수 있도록 해야 할 겁니다. 하지만 '함수 템플릿'이라는 기능을 사용하면이렇게 할 필요가 없습니다. 아래 코드에서 3번째 줄에 있는 것이 함수 템플릿입니다. typename 뒤에 T가 자료형을 대체하죠. 꼭 T가 아니더라도 s나 a 등 다른 문자로해도 상관없지만 일반적으로 T를 사용합니다. 함수 템플릿으로 구성한 Add.. 2024. 4. 17. C++ 기초 : 클래스를 이용한 배열 구조체로 만들었던 가변 배열을이번에는 클래스로 만들어 보겠습니다. 우선 단축키 Ctrl + Shift + X 를 입력하여 클래스 마법사를 열어 주겠습니다. 이후 '클래스 추가' 버튼을 눌러 클래스 이름을 입력해 주면해당 이름을 가진 헤더 파일과 소스 파일이 만들어집니다. 그리고 cArr.h 파일에 cArr의 멤버 변수와 생성자와 소멸자를 선언하겠습니다. 전역 함수를 구현할 때, 헤더 파일에 정의까지 해 놓으면문제가 발생했었죠? 다른 소스 파일에서 해당 헤더 파일을참조하게 되면, 참조한 모든 소스 파일에 같은 함수가 생겨 함수가 여러 개로 인식되는 문제가 발생했었습니다. 그래서 선언과 정의는 따로 분리하는 게 좋습니다. 물론 클래.. 2024. 4. 14. C++ 기초 : 클래스 (3) int i = 0; int i2 = 10; i = i2; 위와 같은 코드가 있습니다. 변수 i에 변수 i2의 값을 복사하여 넣겠다는 거죠. 이것을 '대입'이라고 합니다. 그럼 아래와 같은 코드는 어떤가요? cMy형 객체 c에 cMy형 객체 c2의 값을 대입하였습니다. 오류도 발생하지 않고 c2의 멤버 m_i의 값이 c의 멤버 m_i에복사된 것이 보입니다. 대입을 했을 뿐인데 알아서객체 c2의 멤버 변수의 값이객체 c의 멤버 변수에 대입되었습니다. 어떻게 이런 일이 가능할까요? 아래 코드에서 14 ~ 19번째 줄을 보면대입 연산자라는 것이 있습니다. 대입 연산자는 따로 만들어 주지 않아도 대입 연산이 발생할 수 있기 때문에컴파일.. 2024. 4. 13. 이전 1 ··· 3 4 5 6 7 8 9 ··· 15 다음