본문 바로가기
반응형

씨앤씨뿔21

[씨앤씨뿔] 템플릿과 함수 템플릿 함수 템플릿 함수를 만드는 도구, 다양한 자료형의 함수를 만들어 낼 수 있다. 1 2 3 4 int Add(int num1, int num2) { return num1 + num2; } cs - 위 함수의 기능 : 덧셈 - 대상 자료형 : int형 데이터 위 함수를 템플릿 함수로 변경하자. 1 2 3 4 5 template T Add(T num1, T num2) { return num1 + num2; } cs - template : 이는 T라는 이름을 이용해서 아래에 선언된 함수를 템플릿으로 정의한다는 의미이다. - int을 T로 선언 : T는 자료형을 결정짓지 않겠다는 의미로 사용한 것, 그래서 나중에 T를 대신해서 실제 자료형을 결정한다. * typename을 대신해서 class를 사용해도 된다. 이.. 2023. 6. 28.
[씨앤씨뿔] C++ Template VS Java Generic? C++ 템플릿에 대해 공부하고 있는데, 문득 궁금증이 들어서 살짝 공부 방향을 틀었다. Spring을 통해 프로젝트를 진행할 적에, 메모리를 고려하지 않고 남들이 좋다는 어노테이션이며 안전하다는 방법들을 막갖다붙였다. 여러가지가 겹치니까 속도가 무지막지하게 느려졌다. 그 뒤로 특정 기술이나 방법이 좋다해도 현재의 프로젝트나 기술에 있어서 이를 도입했을 때, 사이드 이펙트를 고려하게 되어 좀더 파악하고 도입하는 습관이 생겼다. 서론과는 무관하지만, JAVA의 generic, C++의 Template 이 비슷해보여서 두 가지의 차이에 대해 궁금해졌다. 사실 기록하려던 내용이 구글링을 하다보니 방향이 틀어져서 서론을 왜썼나 싶게 됐다.. ----------------------------------------.. 2023. 6. 20.
[씨앤씨뿔]C++ / 객체 포인터& 배열 & 동적 생성 - 3 C++에서 문자열을 다루는 방법은 기존의 C에서 사용했던 - C-스트링 - string 클래스 2가지가 있다. C-스트링은 C 언어에서 사용하던 전통적인 문자열로서, '\0'로 끝나는 문자 배열을 문자열로 취급하는 방법이다. String은 C++표준 라이브러리에서 제공하는 클래스로, 문자열을 객체로 다룬다. string은 문자열을 저장하는 버퍼와 함께, 문자열을 다루는 다양하고 유용한 함수와 연산자들을 멤버로 가지며, 개발자들이 C-스트링보다 문자열을 쉽게 다룰 수 있다. string 클래스 사용을 위한 코드 #include using namespace std; C-스트링은 초기에 할당받은 메모리 크기 이상의 문자열을 저장할 수 없기에 개발자의 프로그램 작성에 어려움이 있다 String 클래스는 문자열의.. 2023. 4. 28.
[씨앤씨뿔] isalpha 함수 : <locale> - 3 헤더 파일에 있는 함수 친구들을 하나씩 알아보는 중이다. 그 중 세 번째.. 두둥탁 C & C++ isalpha함수 int isalpha ( int c ); : 매개변수로 들어온 인자가 알파벳이라면 0이 아닌 수를 반환하고 알파벳이 아니라면 0을 반환한다 (아스키코드값을 통해 알파벳을 확인) >>매개변수 : C언어에서 아스키 코드에 해당하는 문자들은 숫자로 표현이 되고, 문자를 넣으면 자동으로 아스키 코드에 있는 숫자로 들어가기 때문에 int 타입이긴 하지만 'a', 'A', '1' 등을 집어 넣어도 된다. 즉, 'a' 와 같이 char 타입으로 집어 넣어도 자동으로 int 타입으로 형변환 되어서 들어가게 된다. 아스키 코드 표를 참고하면 'a'는 자동으로 숫자 97로 형변환되어 들어가게 된다. isal.. 2023. 4. 28.
[씨앤씨뿔] toupper & tolower함수 : <locale> -1 헤더 파일에 있는 함수 친구들을 하나씩 알아보는 중이다. 그 중 첫번째.. 두둥탁 C& C++ toupper & tolower 함수 헤더파일? C언어 : C++ : toupper ? int toupper(int c); >> 매개변수 : 문자를 인자로 받는다. 문자를 넣게되면 아스키 코드표에 기반한 10진 수로 변환되어 들어가며, 숫자가 들어가게 되어도 아스키 코드 표에 기반한 숫자로 인식한다. >> 반환형 : 소문자만 대문자로 변경해서 반환해주고 다른 모든 문자는 그대로 반환하는 함수다. tolower ? int tolower(int c); >> 매개변수 : 문자를 인자로 받는다. 문자를 넣게되면 아스키 코드표에 기반한 10진 수로 변환되어 들어가며, 숫자가 들어가게 되어도 아스키 코.. 2023. 4. 27.
[씨앤씨뿔]C++ / 객체 포인터 &배열 &동적 생성 - 2 배열 delete는 익숙해지지 않으면 실수를 계속할 수도 있으니, 배열 반환 시 delete 연산자의 주의사항을 한 번 더 적었다. int *p = new int [10]; delete p; //비정상 반환. delete[ ] p; 로 하여야함 int *q = new int; delete [ ] q; //비정상 반환.delete q;로 하여야함 ✅new를 이용한 객체의 동적 생성과 생성자 클래스 이름 *포인터 변수 = new 클래스명; // 기본생성자 호출 클래스 이름 *포인터 변수 = new 클래스명(생성자매개변수리스트); new는 클래스 크기의 메모리를 할당받아 객체를 생성하며, 이때 생성자를 호출한다. 앞의 첫 번째 형식의 경우 기본 생성자가 호출되며, 두 번째의 경우 매개변수를 가진 생성자가 호출.. 2023. 4. 26.
[씨앤씨뿔]C++/ 객체 포인터& 배열& 동적 생성 - 1 객체 포인터 객체에 대한 포인터 변수 선언 Circle *p; 현재 선언된 포인터 변수 p는 아무 객체도 가리키지 않는다 포인터 변수에 객체 주소 지정 p = &donut; 포인터 변수 선언 시 객체 주소로 초기화 Circle* p = &donut; 포인터를 이용한 객체 멤버 접근 객체 이름으로 멤버에 접근할 때는 다음과 같이 점(.) 연산자를 이용하지만, d = donut.getArea(); //객체 이름으로 멤버 함수 호출 객체 포인터로 멤버 접근할 때는 -> 연산자를 사용한다. 다음 코드는 p가 가리키는 객체의 getArea()함수를 호출한다. d = p->getArea(); //포인터로 객체 멤버 함수 호출 d = (*p).getArea(); //위 코드와 같은 의미 CheckTime Polygo.. 2023. 4. 24.
반응형