뚜둔뚜둔✩

판다의 개발일지

분류 전체보기 23

[C++] 템플릿 함수 오버로딩 (Template Function Overloading)

C++에서는 함수 오버로딩 기능을 더더욱 유용하게 사용할 수 있도록 템플릿 기능을 제공한다. 하지만 템플릿을 사용하게 되면 동일 형태의 함수는 모두 동일한 동작을 수행하게 된다. 만약 특정 몇몇 경우에만 다르게 동작하게 하고 싶을 때에는 어떻게 할 수 있을까? [C++] 템플릿(Template) 함수 C++에서는 함수의 오버로딩이 가능하다. [C++] 함수 오버로딩(Overloading) C언어와 달리 C++에서는 함수의 인자(parameter) 타입이나 개수가 다르면 동일한 이름의 함수를 여러 개 만들 수 있다. 이를 함 pandas-are-bears.tistory.com [C++] 함수 오버로딩(Overloading) C언어와 달리 C++에서는 함수의 인자(parameter) 타입이나 개수가 다르면 ..

C · C++ 2023.07.02

[C++] 복사 생성자 (Copy Constructor)

모든 객체는 생성 시 "생성자" 함수를 자동으로 호출한다. [C++] 구조체(struct)와 클래스(class) 구조체 여러 데이터 값을 갖는 어떤 새로운 타입을 정의할 때 흔히 구조체를 사용한다. C 언어에서의 구조체는 실제 데이터만을 포함하지만 C++에서는 데이터뿐만 아니라 생성자, 소멸자, 멤버 pandas-are-bears.tistory.com 컴파일러와 생성자 생성자는 반드시 생성 시에 호출되기 때문에, 사용자가 생성자를 별도로 선언하지 않아도 컴파일러가 아무 동작을 하지 않는 생성자를 자동으로 생성하여 추가한다. 다음 예시에서 볼 수 있듯이, 컴파일러가 자동 생성하는 생성자 덕분에 p1 선언에는 문제가 없지만 p2 선언은 컴파일 에러가 발생한다. class Point { private: int..

C · C++ 2023.01.15

[VSCode] Task 활용하기

커스텀 Task 정의하기 Others를 선택하게 되면 task.json 파일이 생성되고 여기에 커스텀 task를 등록할 수 있다. task.json 등록된 task 목록 task1 수행 결과 커스텀 Task 설정 "label"은 task 목록에 뜰 task 이름이다. "type"은 "shell"을 선택하게 되면 task가 bash/cmd/Powershell에서 수행할 명령어로 해석된다. "command"는 실제로 수행할 명령어이다. "group"은 "build", "test", "none" 중 하나의 값을 가질 수 있다. group 분류는 task 수행 때 의미가 있다. Run Task는 "build", "test", "none" 모든 task의 목록을 보여주고, Run Build Task와 Run Te..

기타 2022.07.28

[C++] 템플릿(Template) 함수

C++에서는 함수의 오버로딩이 가능하다. [C++] 함수 오버로딩(Overloading) C언어와 달리 C++에서는 함수의 인자(parameter) 타입이나 개수가 다르면 동일한 이름의 함수를 여러 개 만들 수 있다. 이를 함수 오버로딩이라 한다. int func(int param1); int func(char param1); int func(int.. pandas-are-bears.tistory.com C 언어에 비해선 편리해졌지만.. 여전히 나름의 불편함은 있다. 그 불편함은 바로 동일한 형태의 함수를 타입만 바꿔가며 일일이 다 작성해야 한다는 것이다. (오버로딩은 결국 동일 함수 이름의 사용만을 허용하는 것이기 때문) 여기서 유용한 것이 바로 C++의 템플릿이다. 템플릿은 말 그대로 일종의 "틀"을..

C · C++ 2022.07.27

[C++] 함수 오버로딩(Overloading)

C언어와 달리 C++에서는 함수의 인자(parameter) 타입이나 개수가 다르면 동일한 이름의 함수를 여러 개 만들 수 있다. 이를 함수 오버로딩이라 한다. int func(int param1); int func(char param1); int func(int param1, int param2); [ C언어 ] - 컴파일 실패 main.c:2:5: error: conflicting types for 'func' int func(char param1); ^ main.c:1:5: note: previous declaration is here int func(int param1); ^ main.c:3:5: error: conflicting types for 'func' int func(int param1, ..

C · C++ 2022.07.23

[C++] 함수의 선언과 구현부 분리

선언과 구현부 분리 C++ 클래스의 멤버 함수는 클래스 안에서 구현될 수도 있고, 또는 클래스 내부에는 멤버 함수의 선언만 되고 클래스 외부에서 구현될 수 있다. (1) 클래스 내부 멤버 함수 구현 // Point.h class Point { private: int x; int y; public: int getX(void) { return x; } } ※ 클래스 내부 구현된 함수는 인라인(inline) 함수 취급되는 특징이 있다. (2) 클래스 멤버 함수의 선언과 구현부 분리 // Point.h class Point { private: int x; int y; public: int getX(void); } // Point.cpp int Point::getX(void) { return x; } 분리된 구현..

C · C++ 2022.07.13

[PRACTICE] STRing Functions

PRACTICE script에서 문자열(string)을 변형하고 조작하는 기능을 사용할 수 있다. HTML 삽입 문자열에 대한 정보 STRing.CHAR Extract a character syntax STRing.CHAR("",) return type Hex "" 내에서 위치의 character 하나를 반환한다. 만약 가 ""의 길이를 넘어간다면 0xFFFFFFFFFFFFFFFF(=-1)를 반환한다. PRINT STRing.CHAR("abcdef",2.) // 0x63 (=> 'c') STRing.LENgth Length of string syntax STRing.LENgth("") return type Decimal ""의 문자열 길이를 반환한다. PRINT STRing.LENgth("abcdef")..

기타/SCRIPT 2022.06.19

[C++] 생성자와 초기화 리스트 (Initializer List)

C++에서 생성자는 어떤 구조체 또는 클래스 객체의 생성 시 자동으로 호출되는 함수이다. 따라서 생성자에서는 흔히 초기화에 필요한 동작을 수행하게 되는데, 이때 멤버 변수를 초기화하는 데에는 2가지 방법이 있다. class Point { public: Point(int x_val, int y_val); private: int x; int y; };​ (1) 생성자 함수 블록 내에서 멤버 변수 초기화 (대입) Point::Point(int x_val, int y_val) { x = x_val; y = y_val; } (2) 초기화 리스트로 초기화 (초기화) Point::Point(int x_val, int y_val) : x(x_val), y(y_val) { } 초기화 리스트는 객체의 생성 후 값을 대입하..

C · C++ 2022.05.26