Programming Language(36)
-
[C++] 템플릿 (함수/클래스)
아래 링크 클릭 시 해당 본문으로 이동템플릿 (Template)함수 템플릿클래스 템플릿▷ 전체 코드템플릿 (Template)template : 주형(용해된 금속을 주입하여 주물을 만드는 데 사용하는 틀)• ``에서 `T`는 템플릿 타입 매개변수로, 템플릿에 사용될 데이터 타입에 대한 자리 표시자(placeholder) 역할을 한다.• 보통 `typename`과 `T`로 작성하지만 내 마음대로 작성해도 된다.(ex. class로 적어도 되지만, 여기서 class는 우리가 알고 있는 class가 아니다.)※ 함수 템플릿은 함수가 아니고, 클래스 템플릿은 클래스가 아니다.함수 템플릿• 함수를 찍어내는 템플릿(틀) • 함수 오버로딩(함수명 동일하지만 인자 개수 또는 타입이 다른 게 가능)을 사용할 때 사용한다...
2024.04.02 -
[C++] 접근 지정자
멤버는 언제든지 변경가능하기 때문에 원치 않는 수정으로 값이 바뀌는 문제가 발생한다.이를 방지하기 위해 변경할 수 없게 제한을 두는 기능이 필요하다.접근 지정자가 바로 그 역할을 하며, 캡슐화를 지원한다.캡슐화• 알약 내부 성분이 캡슐 덕분에 보호받는 것처럼 외부로부터 객체의 데이터에 접근하는 것을 막아서 보호하는 것을 의미한다.• 접근해도 되는 데이터는 외부에서 접근할 수 있게 해준다.접근 지정자• C++에서 클래스나 구조체 내에서 객체의 멤버 변수와 멤버 함수에 접근성을 결정하는 키워드이다.• 클래스는 접근 지정자를 명시하지 않으면 디폴트로 `private`이 지정된다.※ 그래도 명시적으로 private 적어주기반면, 구조체는 접근 지정자 디폴트가 `public`이다. 1) public [공개]• 외..
2024.04.01 -
[C++] 래퍼런스 (vs. 포인터)
포인터 및 래퍼런스 문법 요약• 자료형* 변수명; ➜ 포인터 변수 선언 (자료형* 타입의 변수)• *포인터변수; ➜ 포인터로 주소 역참조 (포인터 변수에 저장되어 있는 주소로 역참조 한다.)• &변수; ➜ 변수의 주소값 (본인의 주소값을 반환)• 자료형& 변수명; ➜ 래퍼런스 변수 선언원본에 접근할 수 있는 방법인 포인터 말고도 C++에서 래퍼런스가 추가됐다.래퍼런스(Reference) `&` • C++에 추가된 기능으로, 포인터와 유사하다.• 참조한 원본을 전달한다.• 참조 변수를 통해서 직접적으로 원본을 수정할 수 있다.래퍼런스를 사용하는 이유크기가 큰 원본을 그대로 전달하면 복사 비용이 많이 든다.포인터 변수는 주소를 통해서 접근하기 때문에 원본의 크기는 고정적이다.그래서 비용을 줄이기 위해 래퍼런..
2024.04.01 -
[C/C++] 가변 배열 - 구조체/분할 구현
아래 링크 클릭 시 해당 본문으로 이동가변 배열 - C구조체분할 구현가변 배열 - C++구조체분할 구현가변 배열 - C구조체와 동적 할당을 이용하여 가변 배열 자료형 만들기Arr.h#pragma once// 가변 배열 자료형 tArr (int)typedef struct _tagArr{ int* pInt; int iCount; int iMaxCount;} tArr;// 배열 초기화 함수 // 반환 타입이 필요없기 때문에 void // 주소를 넘겨줘야 되기 때문에 인자 타입은 배열의 주소인 tArr*void InitArr(tArr* _pArr);// 데이터 추가 함수 // 인자 타입은 배열의 주소 tArr* // int 데이터를 추가해야 되므로 int형 인자 _iData 추가void P..
2024.03.28 -
[C++] wchar_t 배열 함수 - wcslen(), wcscat_s(), wcscmp(), wcscpy_s()
아래 링크 클릭 시 해당 본문으로 이동wcslen()wcscat_s()wcscmp()wcscpy_s()해당 본문 내용은 문자열 함수 본문과는 char와 wchar_t 차이지, 대부분의 내용은 거의 비슷하다.겹치는 내용은 최대한 제외했다.참고 링크• 문자열 함수wcslen(), wcscat_s(), wcscmp(), wcscpy_s()헤더 파일// wcslen(), wcscat(), wcscmp()를 사용하려면 아래 헤더 파일을 불러와야 한다.#include wcslen()• 문자열의 길이를 반환하는 함수▶ 함수 원형size_t wcslen(const wchar_t* _String);// 와이드 문자열의 시작 주소를 가리킨다.▷ 예시#include int main(){ wchar_t cName[10] =..
2024.03.27 -
[C++] 문자열 함수 - strlen(), strcat_s(), strcmp(), strcpy_s()
아래 링크 클릭 시 해당 본문으로 이동strlen()strcat_s()strcmp()strcpy_s()`strcat()`, `strcpy()`는 버퍼 오버플로우를 일으킬 가능성이 있어, 안전하지 않은 함수로 간주되어 오류가 발생한다.그래서 좀 더 안전한 함수인 각각 `strcat_s()`, `strcpy_s()`를 사용하기를 권장한다.strlen(), strcat_s(), strcmp(), strcpy_s()헤더 파일// strlen(), strcat_s(), strcmp(), strcpy_s()를 사용하려면 아래 헤더 파일을 불러와야 한다.#include // C 방식#include // C++ 방식 strlen()• 문자열의 길이를 반환하는 함수▶ 함수 원형함수 원형(Function Protot..
2024.03.27 -
[C++] 문자열
아래 링크 클릭 시 해당 본문으로 이동문자열배열 vs. const 포인터문자열 수정하는 법문자열• 문자열 = 주소값문자열은 주소값을 반환하므로 포인터로 주소에 접근한 곳에 문자열이 존재한다.• 문자열 리터럴은 작성한 코드 그 자체이고, 컴파일러에 의해 읽기 전용 메모리(ROM, Read Only Memory)에 저장된다.• 문자열 리터럴은 불변(Immutable)인데, 이는 프로그램 안전성을 높이고, 동일한 리터럴을 재사용하여 컴파일러가 메모리 사용을 최적화할 수 있도록 한다.• 문자열 리터럴은 프로그램 실행 도중에 실시간으로 데이터에 접근해서 수정할 수 없게 보호되고 있다.• 문자열 리터럴(string literal)큰따옴표(`""`)로 묶인 문자 시퀀스, 또는 와이드 문자의 경우 `L` 접두사가 붙고..
2024.03.26 -
[C++] 스트림(stream), 버퍼(buffer)
스트림과 버퍼는 입출력(I/O)과 관련이 있다.C++ 프로그램은 파일이나 콘솔의 입출력을 직접 다루지 않고 스트림(stream)이라는 흐름을 통해 다룬다.스트림(stream)• 입출력을 처리하는 데 사용되며, 바이트(byte) 단위의 데이터 흐름을 의미한다.• 입력 스트림(`std::cin`)과 출력 스트림(`std::cout`)을 제공한다.• 운영체제에 의해 생성되는 가상의 연결 고리를 의미하며, 중간 매개자 역할을 한다.• 스트림은 내부에 버퍼라는 임시 메모리 공간을 가지고 있다.장점• 다양한 데이터 소스(파일, 콘솔 등)에서 읽고 쓰는 작업을 단순화한다.• `std::cin`, `std::cout`처럼 이해하기 쉬운 인터페이스를 제공한다.단점• 데이터가 작으면 스트림이 직접 I/O하는 것보다 느릴 ..
2024.03.26