연산자(Operator) :
특정한 작업을 수행하는 기호 또는 함수로 사용자 정의 연산자도 생성 가능
산술 연산자 (Arithmetic Operators):
+: 덧셈-: 뺄셈*: 곱셈/: 나눗셈%: 나머지할당 연산자 (Assignment Operators):
=: 대입+=: 덧셈 후 대입-=: 뺄셈 후 대입*=: 곱셈 후 대입/=: 나눗셈 후 대입%=: 나머지 후 대입비교 연산자 (Comparison Operators):
==: 동등!=: 부등<: 작다>: 크다<=: 작거나 같다>=: 크거나 같다논리 연산자 (Logical Operators):
&&: 논리적 AND||: 논리적 OR!: 논리적 NOT증감 연산자 (Increment and Decrement Operators):
++: 증가--: 감소비트 연산자 (Bitwise Operators):
&: 비트 AND|: 비트 OR^: 비트 XOR~: 비트 NOT<<: 비트를 왼쪽으로 이동>>: 비트를 오른쪽으로 이동조건(삼항) 연산자 (Conditional (Ternary) Operator):
condition ? value_if_true : value_if_false: 조건이 참이면 첫 번째 값, 거짓이면 두 번째 값 반환멤버 접근 연산자 (Member Access Operators):
.: 멤버 접근 (객체)->: 멤버 접근 (포인터)포인터 연산자 (Pointer Operators):
*: 포인터 역참조&: 주소 참조타입 변환 연산자 (Type Conversion Operators):
static_cast: 정적 타입 변환dynamic_cast: 동적 타입 변환 (상속 관련)const_cast: 상수 제거 변환reinterpret_cast: 재해석 변환연산자 중복 (Operator Overloading) :
기존의 연산자를 사용자 정의 데이터 유형에 대해 새로 정의하거나 확장
예를 들어, 두 개의 객체를 더하는 연산자 +를 사용자 정의 클래스에 대해 사용하고자 할 때, 연산자 중복을 이용할 수 있습니다.
//연산자 중복
std::cout << "Hello World" << std::endl;
operator<<(std::cout,"Hello World").operator<<(std::endl);
함수 중복(Function Overloading):
같은 이름의 함수를 여러 번 정의하는 기능
동일한 이름의 함수를 다양한 매개변수 목록과 타입에 대해 정의 가능
호출 시 전달되는 인자에 따라 적절한 함수가 자동으로 선택되어 실행
예를 들어, 동일한 함수 이름으로 여러 개의 함수를 정의하여 다양한 데이터 유형에 대해 동작을 제공할 수 있습니다.
//<complex.h>
#ifndef COMPLEX_H
#define COMPLEX_H
class Complex{
private:
double re;
double im;
public:
Complex();
Complex(double re);
Complex(double re, double im);
~Complex();
double real();
double imag();
void real(double re);
void imag(double im);
};
위에서는 Complex 함수를 인자가 없는 Complex() 와
실수형을 받는 Complex(double re) 와 Complex(double re, double im) 로 만들어 준었다.
Reference(aliasing) vs pointer
레퍼런스(참조):
반드시 초기화되어야 하며 선언과 동시에 변수에 바인딩초기화되면 다른 변수에 바인딩되지 않음자동으로 간접 참조되므로 포인터 연산이 필요하지 않음주로 함수의 매개변수로 전달하거나 함수의 반환 값으로 사용포인터:
주소를 저장하는 변수 로 직접적인 메모리 주소를 가리킴널 포인터(NULL 포인터)로 초기화할 수 있습니다.여러 변수들과 공유 될 수 있습니다.간접 참조 , 값을 변경할 수 있음동적 메모리 할당, 배열 처리, 객체의 동적 변화 의 경우에 더 적합값에 의한 호출 (Call by value)
인자의 값을 복사하여 함수 내부에 새로운 변수로 사용하므로,원본 변수는 영향을 받지 않음로컬 변수로 취급참조에 의한 호출 (Call by Reference) :
메모리 주소를 전달인자의 값이 변경되면 원본 변수도 변경