뚜둔뚜둔✩

판다의 개발일지

[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 0

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

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

C · C++ 2023.01.15 0

[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 0

[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 0

[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 0

[HTML/CSS] 색상 코드 (Color Names)

HTML 삽입 미리보기할 수 없는 소스 빨강 계열 (Red) Color Name Hex RGB IndianRed #CD5C5C rgb(205, 92, 92) LightCoral #F08080 rgb(240, 128, 128) Salmon #FA8072 rgb(250, 128, 114) DarkSalmon #E9967A rgb(233, 150, 122) LightSalmon #FFA07A rgb(255, 160, 122) Crimson #DC143C rgb(220, 20, 60) Red #FF0000 rgb(255, 0, 0) FireBrick #B22222 rgb(178, 34, 34) DarkRed #8B0000 rgb(139, 0, 0) 분홍 계열 (Pink) Color Name Hex RGB Pin..

기타 2022.05.22 0
[C++] 복사 생성자 (Copy Constructor)

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

C · C++ 2023.01.15 0
[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 1
[C++] 구조체(struct)와 클래스(class)

구조체 여러 데이터 값을 갖는 어떤 새로운 타입을 정의할 때 흔히 구조체를 사용한다. C 언어에서의 구조체는 실제 데이터만을 포함하지만 C++에서는 데이터뿐만 아니라 생성자, 소멸자, 멤버 함수, 접근 지정자를 포함할 수 있다는 것이 다르다. [ C언어 ] struct Point { int x; int y; }; [ C++ ] struct Point { private: int x; int y; public: Point() {} ~Point() {} int getX(void) { return x; } int getY(void) { return y; } }; 접근 지정자 C++ 구조체는 접근 지정자로 특정 멤버 변수 및 함수를 외부에서 접근할 수 없게 할 수 있다. private 접근 지정자는 외부에서의 접..

C · C++ 2022.05.15 2
[PRACTICE] Basics

HTML 삽입 미리보기할 수 없는 소스 1) 주석 추가하기 // 또는 ; 추가로 한 줄 주석을 추가할 수 있다. // comments start with // or ; or ; 하지만 ;의 경우, Var command group에서 주석이 아닌 다른 의미로 사용될 수 있기 때문에 //로 주석을 추가하는 것이 더 안전하다. Var.View flags[3];ast.count;i 2) 여러 줄에 나눠 쓰기 어떤 매우 긴 명령은 백슬래시(\)를 사용해 여러 줄에 나누어 작성할 수 있다. APPEND test_protocol.txt\ FORMAT.STRing("&testfunc=&correct_result",50.,' ')\ FORMAT.UnixTime("c",DATE.UnixTime(),DATE.utcOffSe..

SCRIPT 2022.05.06 0
[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 0
[PRACTICE] 조건문과 반복문

HTML 삽입 미리보기할 수 없는 소스 조건문 주어진 조건에 따라 수행하는 명령을 제어한다. IF "&testfunc"!="" ( IF Var.VALUE(&testfunc)==&correct_result ( PRINT FORMAT.STRing("&testfunc=&correct_result",50.,' ') ) ELSE ( PRINT FORMAT.STRing("&testfunc failed with &result (&correct_result)",50.,' ') ) ) 이때 조건문의 condition은 TRACE32 syntax를 따라야 한다. 또는, 사용된 programming 언어의 syntax로 condition을 정의할 수 있다. Var.IF (flags[0]==flags[5]) PRINT "Va..

SCRIPT 2022.05.06 0
VSCode에서 cmm script 작성하기

PRACTICE cmm script를 작성하는데 가장 기본적인 방법은 TRACE32 SW가 제공하는 script 편집기를 사용하는 것이다. 문제는... 여기서 script를 작성하기엔 참 불편한 점들이 많다는 것이다. (느낌상으로는 기본 메모장에서 코드를 작성하는 것과 크게 차이가 느껴지지도 않는다) 그럼에도 불구하고 이 외의 다른 프로그램에서는 PRACTICE script syntax가 제대로 표시되지 않기 때문에 불편함을 감수하고 이 환경에서 작업을 할 수밖에 없다. 하지만...! 알고보니 VSCode에는 Lauterbach에서 배포한 PRACTICE script syntax highlight을 제공하는 extension이 있었다. 이 extension을 활용하면 훨씬 뛰어난 기능이 제공되는 편집기에..

SCRIPT 2022.05.04 0
[C] printf 함수

#include int printf(const char *format, ...); printf 함수는 C에서의 표준 출력 함수로, 표준 출력 스트림인 stdout(standard output)에 정해진 format 형식의 문자열을 출력한다. format은 const char* 타입으로, printf 사용 시 출력하고자 하는 형태의 문자열을 format specifier 및 escape sequence와 함께 구성하여 "...." 형태로 전달한다. Escape Sequence 출력하고자 하는 문자열은 " 큰 따옴표로 둘러싸인 문자열로 전달된다. 만약 "Hello World"라는 문자열을 (큰 따옴표까지 포함하여) 출력하려면 다음과 같이 하면 될까? printf(""Hello World""); 답은, '아니..

C · C++ 2021.12.21 0