<C++에서 새로 나온 개념>
- bool형, string형
- 함수 오버로딩, default 값, inline 함수
- 연산자 오버로딩
- namespace
- 참조자(reference)
- new, delete 연산자
- generic
bool
0을 거짓, 그 외의 수를 참으로 흔히 사용하다가 c++에서 이를 아예 bool 값으로 정의해버렸다.
true: 참을 의미하는 1바이트 크기의 데이터
false: 거짓을 의미하는 1바이트 크기의 데이터
즉 true, false는 정수 1,0과는 다르다. 하지만 정수가 와야 할 위치에 오면 각각 1과 0으로 변환된다.
ex) int num=true+false; //num=1+0;
string
문자를 배열 형태로 처리하는 , 즉 문자열을 처리하는 클래스이다.
다양한 상황에 맞게 사용할 수 있는 연산자와 멤버 함수가 있다.
문자열 길이 / .size(), .length()
문자열 결합 / .append(), .insert() 혹은 +,+= 연산자
문자열 비교 / .compare() 혹은 ==, !=, >, >=, <, <= 연산자
이 외의 다양한 기능들은 아래에 잘 나와있다.
www.cplusplus.com/reference/string/ 혹은 blockdmask.tistory.com/338
C++의 string은 C언어의 char*, char[] 문자열과 달리 문자열끝에 '\0'이 붙지 않으므로 주의해야한다.
함수 오버로딩
매개변수의 선언이 다를 경우 동일한 이름의 함수를 오버로딩하여 정의할 수 있다. 반환값의 형은 오버로딩에서 고려되지 않는다. 즉, 매개변수는 갖고 반환형만 다른 경우에는 함수 오버로딩 조건이 성립되지 않는다.
ex)
가능 - 매개변수의 자료형이 다르므로
int MyFunc(char c) { }
int MyFunc(int n) { }
가능 - 매개변수의 수가 다르므로
int MyFunc(int n) { }
int MyFunc(int n1, int n2) { }
불가능 - 매개변수가 같으므로
void MyFunc(int n) { }
int MyFunc(int n) { }
즉, 매개변수가 달라야한다.
연산자 오버로딩
연산자 대상이 무엇이냐에 따라 기존 연산자의 의미를 새롭게 정의할 수 있다.
string 클래스의 +,+= 연산자도 연산자 오버로딩의 한 예이다.
namespace
서로 같은 이름의 함수,변수를 구별하기 위해 namespace를 만들어 이 namespace를 함수 또는 변수 앞에 적어줌으로써
구별한다. 즉 함수 이름이 같아도 namespace로 구별가능하다.
ex)
namespace A{
void C() {} //A::C()
}
namespace B{
void C() {} //B::C()
}
using을 사용하여 미리 namespace를 명시해줄 수 있다.
각각 따로 using을 붙여 명시해주거나, 'using namespace ○○○'을 사용하여 전체를 통틀어 명시해준다.
참조자
변수의 별명이다.
포인터 대신 사용함으로써 코드를 간략하게하고, 보안성을 높일 수 있다.
생성 즉시 초기화해야하며, nULL 혹은 상수로 초기화 할 수 없다.
ex)
int &num1=num2; //num2가 num1의 별명이 된다.
이 이후부터는 num1로 하는 모든 연산이 num2로 하는 것과 동일한 결과를 보인다.
포인터에 대한 참조도 가능하다.
ex)
int *(&pref)=ptr; //포인터에 대한 참조
int **(&dpref)=dptr; //이중 포인터에 대한 참조
new, delete 연산자
c에서 malloc, free가 있다면 c++에는 new, delete가 있다.
동적으로 메모리를 할당한다.
c의 malloc, free와 같은 역할을 하지만 c++의 new,delete는 프로그램이 죽었을 때 exception을 받아 문제가 무엇인지 확인할 수 있다는 점에서 차이가 있다.
generic
클래스의 정의를 자료형에 상관없이 일반화하여 재사용할 수 있다.
'기록장' 카테고리의 다른 글
GitHub 명령어 순서 (0) | 2021.07.10 |
---|---|
20210705 호스트파일이란 (0) | 2021.07.05 |
LMS 동영상 배속 꿀팁 (0) | 2021.03.28 |
20210319 기본 DNS 서버 할당 기준 (2) | 2021.03.19 |
20210306 bluetooth와 air drop의 차이 (0) | 2021.03.06 |