C++ 10

C++) 템플릿(Template)

템플릿 : 어떤 자료형이 들어오든 대응할 수 있도록  자료형이 무엇인지 확정해두지 않고   임시 자료형을 선언한 뒤 어떤 작업을 할 것인지 그 형틀을 만들어둔 것 template템플릿을 사용하기 위해선, 해당 템플릿을 사용할 내용 바로 앞줄에 "이 바로 뒤에 오는 구문에서는 안에 들어오는 내용을 사용할 것"이라고 정의해야 한다. "이 뒤에 있는 내용들은 T라는 자료형을 이용하는 템플릿이다"라고 알리는 구문.기본적으로는 바로 다음에 오는 코드 한 줄에만 적용되나, 그 한 줄이 함수나 클래스 등의 블럭을 가진 대상일 경우엔 그 블럭 안에 있는 모든 코드에 적용 typename : "이 키워드 뒤에 오는 이름은 다음 템플릿에서 '자료형의 이름'이라고 취급한다"는 뜻이다. 그리고 실제로 사용할 때는 여기에 들..

C++ 2025.01.15

C++) 포인터와 배열

배열의 이름은 배열의 첫 번째 요소를 가리키는 포인터로 해석될 수 있다.int arr[5] = {1, 2, 3, 4, 5}; 다음과 같은 배열이 있다고 가정했을 때 int* ptr = arr; // ptr은 arr의 첫 번째 요소를 가리킴for (int i = 0; i 위와 같이 포인터를 사용하여 배열의 요소에 접근할 수 있다. 위의 코드에서 *(ptr + i)는 arr[i]와 동일한 결과를 반환한다. 포인터와 배열은 메모리에서 밀접하게 연결되어 있으며, 배열의 이름은 배열의 첫 번째 요소를 가리키는 포인터로 해석될 수 있다. 포인터를 사용하여 배열의 요소에 접근할 수 있으며, 배열과 포인터는 서로 보완적인 역할을 한다.  STL을 사용하지 않고 iostream와 포인터의 특성 만을 이용해 벡터의 생성,..

C++ 2025.01.13

C++) 암시적 멤버 함수

멤버 함수 : 클래스의 일부로 정의된 함수로, 멤버 함수는 해당 클래스의 객체가 가지고 있는 데이터(멤버 변수)에 접근하고, 이를 조작할 수 있는 기능을 제공한다. class Dog {public: void bark() { std::cout  위와 같은 간단한 클래스가 있을 bark()함수는 Dog 클래스의 멤버 함수이다.  생성자의 경우, 생성자가 만들어져있지 않다 하더라도 컴파일러가 알아서 생성자가 만들어졌다고 판단하여 자동적으로 처리하는 기능이 있는데 이렇게 만들지 않았을 때도 컴파일러가 자동 생성하는, 그래서 어떤 클래스건 일단 있다고 가정하게 되는 함수들을 "암시적 멤버 함수(메소드)"라고 칭한다. 암시적 멤버함수에는 기본 생성자, 소멸자, 복사 생성자, 이동 생성자 등이 있다..

C++ 2025.01.13

C++) 상속

상속 : 기존 클래스(부모 클래스 또는 기초 클래스)의 속성과 메서드를 새로운 클래스(자식 클래스 또는 파생 클래스)에서 재사용할 수 있게 해주는 기능 부모 클래스와 자식 클래스:부모 클래스는 기본적인 속성과 메서드를 정의하는 클래스.자식 클래스는 부모 클래스를 상속받아 부모 클래스의 속성과 메서드를 사용할 수 있으며, 추가적인 속성과 메서드를 정의할 수 있다. class Animal { // 부모 클래스public: void eat() { std::cout  간단한 예시로 Animal이라는 부모 클래스와 이를 상속하는 Dog라는 자식 클래스를 생성하였을때, main에서 Dog 클래스 객체인 myDog를 생성하면 Animal에 있는 함수 eat()와 Dog에 있는 bark() 함수를 불..

C++ 2025.01.10

C++) 클래스(Class)

클래스 : 구조체의 발전형으로 데이터와 그 데이터를 처리하는 함수를 하나의 단위로 묶는 사용자 정의 데이터 타입이다.내부에 멤버변수들을 여럿 둘 수 있다는 점은 구조체와 동일하지만, 클래스는 멤버 "함수"도 넣을 수 있고, 각각의 멤버에 접근 권한을 설정해둘 수 있다는 점이 제일 큰 차이이다. class student{ private: char name[30]; // 이름 int age; // 연령 int id; // 학번 int password; // 비밀번호public: int count; int get_age() { return age; } void set_age(int a) { age = a; } student(); student(const char* n, int a, int i,..

C++ 2025.01.08

C++) 동적 할당

동적할당 :  프로그램 실행 중에 메모리를 할당하는 방법을 의미한다. 주로 new 구문을 이용. int main(){ for (int i = 0; i 이 경우의 변수 temp는 루프문이 실행될 떄마다 할당되는 것이 아니라, 이미 할당이 완료된 상황에서 매 루프마다 다시 초기화되는 것에 불과하다는 의미 -> 컴파일러가 코드를 해독하고 나서 프로그램을 만들 떄 이미 변수를 할당했다는 것이다.이는 조건문 등으로 인해 실제로 이 코드가 실행되는 일이 없다 할 지라도 무조건 컴파일러가 할당하게 된다. 따라서 경우에 따라서는 만들었음에도 쓰이지 않는 변수가 될 수 있다.  int main(){ int* temp; for (int i = 0; i  그런데 이번엔 포인터로서 만들고, 할당하는 주소 대신..

C++ 2025.01.06

C++) 포인터(Pointer)

포인터 : 자료 그 자체가 아니라, 자료의 "주소"를 가리키는 값을 저장하는 자료형프로그램에서 자료는 저장장치의 특정 메모리 칸에 저장되며, 이 칸을 주소로서 기록한다. 이름에 그 주소를 매칭시키는 것으로 해당 이름을 불렀을 때 그 주소에 접근할 수 있도록 한다. 그렇게 사용되는 주소 그 자체를 저장하는 변수를 포인터라고 한다. int main(){ int apple = 4; printf("%d\n", apple); int* fruit; fruit = &apple; } int형 자료 apple을 4라고 저장했을 때, 이 apple은 저장장치의 특정 메모리칸에 저장될 것이다.  그리고 int 앞에 *를 붙여 포인터 변수를 만드는 데 이는 "해당 주소가 가리키는 ..

C++ 2025.01.06

C++) 인터페이스(Interface)

인터페이스 : 객체 지향 프로그래밍의 개념으로, 클래스가 특정 메서드를 구현하도록 강제하는 일종의 계약을 정의한다. class Human{public: void Print() { std::cout  위와 같이 Human이라는 부모 클래스를 만들었다고 가정했을 때, Print() 함수는 "사람"을 출력하지만 아래의 InterFunction1, InterFunction2, Interface는 아무것도 없이 비어 있다. InterFunction1,2는 비어있는 함수라 자식 클래스들이 상속을 받아 따로 작성을 해 사용을 해야 한다. InterFunction2앞에 붙어 있는 virtual은 가상함수라는 뜻이다. 실제로 하는 기능은 전혀 없지만 이 단어가 붙어있는 함수를 보고 다음 개발자가 코드와 함수 구성에..

C++ 2024.12.26

C++) 템플릿(Template)

템플릿 : 어떤 자료형이 들어오든 대응할 수 있도록, 자료형이 무엇인지 확정해두지 않고 임시 자료형을 선언한 뒤 어떤 작업을 할 것인지 그 형틀을 만들어둔 것template 여기서 앞의 template은 :템플릿 데이터 지시 직후에 나오는 작성이 끝날 때까지 템플릿에서 지정한 규칙이 적용된다.뒤의 typename은 템플릿에서 누락된 자료형의 존재를 대신해서 자료형이 들어갈 자리'를 지칭하기 위한 임시명칭임시 명칭 T는 아무거나 바꿔나 상관없으나 T를 많이 사용한다고 한다. template T Calculate(T x, T y){ T result = x + y; return result;}이렇게 탬플릿을 이용해 함수를 만들었을 때, 임시명칭으로 지정된 미지의 자료형 T로 변수 생성 후 미지의 변수 ..

C++ 2024.12.26

C++) STL과 자료구조

STL은 "Standard Template Library"의 약자로, C++ 프로그래밍 언어에서 제공하는 템플릿 기반의 라이브러리이다.C++에서는 구조체와 객체를 사용해서 여러 데이터를 포괄하는 개념을 이름으로 제시하고, 해당 이름을 호출하면 사전에 정해둔 과정에 따라 좀 더 복잡한 방법으로 데이터를 다룰 수 있게 조치하는 것이 관건. 그래서 나온 것이 "수정이 가능한 문자열", "크기가 바뀌는 배열", "메모리 관리에 적합한 최적화 데이터 집합" 등을 만들게 되는데 이 추가 기능들이 흔히 STL이라고 불리는 기능의 실체이다. 따라서 STL은 데이터 자료구조와 알고리즘을 효율적으로 사용할 수 있도록 다양한 기능을 제공한다.  문자열#include int main(){ std::string str =..

C++ 2024.12.23