'Computer Science/C & C++' 카테고리의 글 목록 (4 Page) — Archive

Computer Science/C & C++

Computer Science/C & C++

[C++] friend | 프렌드

\(\texttt{friend}\) 프렌드 - 멤버 함수가 아닌 외부 함수를 해당 클래스의 전체 멤버에 접근 가능하게 만들어서* 해당 클래스의 멤버 함수와 동등한 접근 권한을 갖게 하는 C++의 키워드이다. ex) 클래스 외부에 정의된 일반 함수를 \(\texttt{friend}\)를 통해 클래스 내부로 Grant하면, 클래스의 멤버 함수인 것처럼 클래스의 멤버에 접근이 가능해진다. ex) A클래스에 B클래스를 \(\texttt{friend}\)로 Grant하면, B클래스의 멤버 함수들은 A클래스의 멤버 함수인 것 처럼 동작할 수 있다. - \(\texttt{friend}\) 키워드로 Grant 가능한 형태로 프렌드 함수, 프렌드 클래스 ,프렌드 멤버 함수 세 가지가 있다. ※ 프렌드 함수 개념을 이용하..

Computer Science/C & C++

[C++] Operator Overloading | 연산자 오버로딩

Operator Overloading 연산자 오버로딩 - 이미 정의되어 있는 연산자를 사용자 정의 데이터형에 최적화시키는 기능이다. - C++의 Polymorphism(다형)적 특성을 잘 보여주는 기능이며, OOP가 지향하는 내부 구현사항의 추상화의 목적에 부합한다. // Ex. 오버로딩된 덧셈 연산자(+)의 사용 예시 // (x.1 class Stock { ... }; Stock st1, st2; ... st1 = st1 + st2; // 사용자 정의 클래스의 객체인 st1과 st2를 직접적으로 더하고 있다. // Ex.2 for (int i = 0; i < 20; i++) evening[i] = sam[i] + janet[i]; // 덧셈 연산자를 해당 자료형에 오버로딩 시켜 덧셈 표현을 간소화 할 ..

Computer Science/C & C++

[C++] this Pointer | this 포인터

\(\texttt{this}\) Pointer \(\texttt{this}\) 포인터 - 클래스 객체와 관련이 있는 포인터이다. - \(\texttt{this}\) 포인터는 멤버 함수를 호출한 객체 "자기 자신"을 지시하는 포인터이다. - 기본적으로, \(\texttt{this}\)는 해당 메서드에 숨은 매개변수로써 프로그래머가 모르게 전달된다. (모든 클래스 메서드들은 호출한 객체의 주솟값을 가진 하나의 \(\texttt{this}\) 포인터를 가진다.) - \(\texttt{this}\) 포인터는 특히, 하나의 메서드가 두 개의 데이터 객체를 동시에 처리할 때 유용하게 쓰인다. // Ex. this 포인터의 약식 표기 예시 class Person { private: std::string name; i..

Computer Science/C & C++

[C++] Class Destructor | 클래스 파괴자

Class Destructor 클래스 파괴자 - 객체의 수명이 다하는 시점에 프로그램이 실행시키는 특별한 메서드이다. - Class Constructor(클래스 생성자)와 반대되는 기능을 하는 메서드이다. Destructor Definition (파괴자 정의) - 파괴자는 별도의 리턴형을 가지지 않는다. (\(\texttt{void}\)형에도 해당되지 않는다.) - 파괴자의 이름은 \(\sim\) Operator (Tilde Operator) 을 클래스 이름 앞에 붙이는 것으로 고정된다. - 파괴자는 생성자와 달리, 매개변수를 가져서는 안된다. (즉, 파괴자는 이름이 고정되어 있고, 매개변수를 가져서는 안되므로 한 클래스에 딱 하나만 존재하게 된다.) // Ex. 파괴자 정의 예시 class Stock ..

Computer Science/C & C++

[C++] Class Constructor | 클래스 생성자

Class Constructor 클래스 생성자 - 클래스에 반드시 포함되는 특별한 멤버 함수 중 하나이다. - 해당 클래스를 통해 데이터 객체가 생성되면 프로그램에 의해 자동으로 호출되는 메서드이다. - 새로운 데이터 객체를 생성하고 그들의 데이터 멤버에 값을 대입하는 등의 기본적인 연산을 수행한다. (사용자가 어떻게 정의하느냐에 따라 다양한 작업들도 수행할 수 있다.) Constructor Definition (생성자 정의) - 생성자는 별도의 리턴형을 가지지 않는다.(\(\texttt{void}\)형에도 해당되지 않는다.) - 생성자의 이름은 해당 클래스의 이름과 동일하다. - 각각의 생성자들끼리는 함수 Signature(매개변수 정보)를 달리하여, 생성자 또한 오버로딩이 가능하다. (즉, 각각의 생..

Computer Science/C & C++

[C++] Class | 클래스

Class 클래스 - C++에서 사용자 정의 데이터형*을 Abstraction(추상화)** 기법을 통해 정의할 수 있게하는 수단이다. - 클래스는 Data Member(데이터)와 Member Function(Method; 데이터를 조작하는 수단)로 구성된다. - 메서드 없이 데이터만 존재하는 구조체와는 대조적이며, 이 때문에 구조체를 Plain-Old Data 구조(POD 구조)라고 부르기도 한다. - 데이터와 메서드를 구분지음으로써 Data Capsulation(데이터 캡슐화)***을 구현한다. * Specifying Basic Type (기본형의 서술) - 데이터의 기본형을 서술하기 위해서는 아래 3가지를 결정해야 한다. - Built-in Data Type(내장된 기본 데이터형)의 경우, 아래와 같..

Computer Science/C & C++

[C++] Namespace | 이름 공간

Namespace 이름 공간 - C++에서 이름 사용 범위를 제어하는 기능이다. - 대규모의 프로그래밍 프로젝트에서 변수나 함수와 같은 이름이 중복되어 생기는 문제*에 대한 해결책이다. * Namespace Problem (이름 공간 문제) : 두 라이브러리에서 같은 이름의 변수, 함수가 정의되어 있어서 생기는 충돌 문제이다. Declarative Region (선언 영역) - 말 그대로, 선언할 수 있는 영역을 의미한다. ex) 전역 변수의 선언 영역 : 모든 함수의 바깥 영역 ex) 함수 내의 지역 변수의 선언 영역 : 해당 함수 내부 - \(\texttt{namespace}\)는 이름을 선언하는 영역을 따로 제공하는 기능이다. Potential Scope (잠재 사용 범위) - 해당 변수를 선언한 ..

Computer Science/C & C++

[C++] cv Specifier | const-volatile 제한자 (정보 취합하기!)

Specifier 제한자 - 제한자는 크게 Strorage Class Specifier(기억 공간 제한자)와 cv Specifier(\(\texttt{const-volatile}\) 제한자)로 분류된다. cv Specifier (\(\texttt{const-volatile}\) 제한자) - \(\texttt{const}\) 제한자와 \(\texttt{volatile}\) 제한자를 통칭하는 용어이다. \(\texttt{const}\) Specifier (\(\texttt{const}\) 제한자) - 처음 초기화된 후에는 프로그램이 해당 변수의 메모리 공간을 변경할 수 없게하는 제한자이다. - \(\texttt{const}\) 키워드가 붙을 수 있는 위치는 크게 세 가지로 나뉜다. 1. 리턴형 앞 const..

lww7438
'Computer Science/C & C++' 카테고리의 글 목록 (4 Page)