프로그램 작성

초보자를 위한 C++ 튜토리얼

2021년 10월 30일

목차

C++이란 무엇입니까?

C++는 고성능 애플리케이션을 만드는 데 사용되는 크로스 플랫폼 언어입니다. Bjarne Stroustrup은 이를 C 언어의 확장으로 개발했습니다. C++는 프로그래머가 시스템 리소스와 메모리를 제어할 수 있도록 합니다. 이 언어는 2011년, 2014년, 2017년에 세 차례에 걸쳐 C++11, C++14 및 C++17로 업데이트되었습니다.

C++를 사용하는 이유

  • C++는 프로그래밍에 가장 많이 사용되는 언어 중 하나입니다.
  • C++는 운영 체제, GUI 및 임베디드 시스템에서 찾을 수 있습니다.
  • 프로그램에 명확한 구조를 제공하고 코드를 재사용할 수 있게 하여 개발 비용을 낮추는 객체 지향 프로그래밍 언어입니다.
  • 이식 가능하며 여러 플랫폼에 적용할 수 있는 응용 프로그램을 개발하는 데 사용할 수 있습니다.
  • C++는 C#에 가깝고 자바 , 프로그래머가 C++로 또는 그 반대로 쉽게 전환할 수 있습니다.

특징

    단순한: C++는 풍부한 함수, 데이터 유형 등에 대한 구조화된 접근 방식을 제공하기 때문에 단순한 언어입니다.가지고 다닐 수 있는: 어셈블리 언어와 달리 c 프로그램은 거의 또는 전혀 변경 없이 많은 기계에서 실행되고 있습니다. 그러나 플랫폼에 독립적이지 않습니다.중급 프로그래밍 언어: C++는 저수준 프로그래밍을 수행하는 데 사용됩니다. 커널, 드라이버 등과 같은 응용 프로그램을 개발하는 데 사용됩니다. 고급 언어의 기능도 지원합니다.구조화된 프로그래밍 언어: C++는 함수를 사용하여 프로그램을 여러 부분으로 나눌 수 있기 때문에 구조화된 프로그래밍 언어입니다.풍부한 라이브러리: C++는 개발을 빠르게 하는 내장 기능을 제공합니다.메모리 관리: 동적 메모리 할당 기능을 제공합니다. free() 함수를 호출하여 할당된 메모리를 해제할 수 있습니다.속도: C++ 언어의 컴파일 및 실행 시간이 빠릅니다.바늘: C++는 포인터의 기능을 제공합니다. 포인터를 사용하여 메모리와 직접 상호 작용할 수 있습니다.재귀: C++에서는 함수 내에서 함수를 호출할 수 있습니다. 모든 기능에 대한 코드 재사용성을 제공합니다.확장 가능: C++ 언어는 새로운 기능을 빠르게 채택할 수 있기 때문에 확장 가능합니다.객체 지향: C++는 객체 지향 프로그래밍 언어입니다. OOP는 유지 관리와 개발을 더 쉽게 만드는 반면 절차 지향 프로그래밍 언어에서는 프로젝트에 따라 코드가 커지는 경우 관리 크기가 증가합니다.컴파일러 기반: 컴파일러 기반의 프로그래밍 언어입니다. 먼저 컴파일러를 사용하여 프로그램을 컴파일해야 프로그램을 실행할 수 있습니다.

로컬 환경 설정

컴퓨터에 다음 소프트웨어가 있으면 좋을 것입니다.

    C++ 컴파일러

이것은 소스 코드를 최종 실행 프로그램으로 컴파일하는 데 사용되는 실제 C++ 컴파일러입니다. 대부분의 C++ 컴파일러는 소스 코드에 어떤 확장을 제공하는지 상관하지 않습니다. 가장 자주 사용되는 컴파일러는 GNU C/C++ 컴파일러입니다.

    텍스트 에디터

소프트웨어에서 입력하는 데 사용됩니다. 예로는 Windows 메모장, OS 편집, Short, Epsilon, EMACS, Vim 또는 VI 명령이 있습니다. 편집기로 생성한 파일을 소스 파일이라고 하고 C++ 파일을 .cpp, .cp 또는 .c라고 합니다. C++ 프로그래밍을 시작하려면 텍스트 편집기가 있어야 합니다.

    기본 구문

이제 클래스, 개체, 메서드 및 인스턴스 변수가 의미하는 바를 살펴보겠습니다.

    물체− 객체에는 상태와 동작이 있습니다. 예: 고양이는 색상, 이름, 품종 및 행동과 같은 조건이 있습니다. 흔들기, 야옹 소리, 먹기. 객체는 클래스의 인스턴스입니다.등급− 클래스는 해당 유형의 개체가 지원하는 동작/상태를 설명하는 청사진으로 정의됩니다.행동 양식- 방법은 행동이다. 클래스에는 여러 메서드가 포함될 수 있습니다. 로직이 작성되는 메소드에서는 데이터가 조작되고 조치가 실행됩니다.인스턴스 변수− 각 개체에는 고유한 인스턴스 변수 모음이 있습니다. 엔터티의 조건은 이러한 예제 변수에 할당된 값에 의해 생성됩니다.

예시

|_+_|

산출

|_+_|

위에서 언급한 프로그램의 다양한 부분을 살펴보겠습니다.

  • 헤더가 필요합니다.
  • 네임스페이스 std를 사용하십시오. 컴파일러에게 네임스페이스 std를 사용하도록 경고합니다.
  • int main() 줄은 프로그램 실행이 시작되는 주요 기능입니다.
  • 다음 줄은 다음으로 잘립니다.<< Hello World; the word Hello World is reflected on the keyboard.
  • 다음 줄은 0을 반환합니다. main() 함수가 종료됩니다.

C++ 기본 입출력

C++ I/O 작업은 스트림 개념을 사용합니다. 스트림은 바이트 시퀀스 또는 데이터 흐름입니다. 성능을 빠르게 해줍니다.

바이트가 주 메모리에서 프린터, 디스플레이 화면 또는 네트워크 연결 등과 같은 장치로 흐르는 경우 이를 다음과 같이 알려져 있습니다. 출력 작업.

프린터, 디스플레이 화면, 네트워크 연결 등과 같은 장치에서 주 메모리로 바이트가 흐르는 경우 이를 입력 작업.

표준 출력 스트림(cout)

그만큼 비용 의 미리 정의된 개체입니다. 오스트림 등급. 일반적으로 디스플레이 화면인 출력 장치와 연결됩니다. cout은 스트림 삽입 연산자와 결합하여 콘솔에 출력을 표시하는 데 사용됩니다.

예시

|_+_|

산출

|_+_|

표준 입력 스트림(cin)

그만큼 미리 정의된 개체입니다. 일반적으로 키보드인 입력 장치와 연결됩니다. cin은 스트림 추출 연산자(>>)를 조인하여 콘솔 입력을 읽는 데 사용됩니다.

예시

|_+_|

산출

|_+_|

표준 엔드 라인(endl)

그만큼 클래스의 미리 정의된 개체입니다. 줄 바꿈 문자를 삽입하고 스트림을 플러시하는 데 사용됩니다.

예시

|_+_|

산출

|_+_|

C++ 변수

변수는 메모리 위치의 이름입니다. 데이터를 저장하는 데 사용됩니다. 값은 변경될 수 있으며 여러 번 재사용됩니다. 쉽게 식별할 수 있도록 기호를 통해 메모리 위치를 나타내는 방식입니다. 변수에는 알파벳, 밑줄 및 숫자가 포함될 수 있습니다. 변수 이름은 알파벳과 밑줄로만 시작할 수 있습니다. 숫자로 시작할 수 없습니다.

변수 이름에는 공백이 허용되지 않습니다.

변수 이름은 예약어나 키워드가 아니어야 합니다(예: char, float 등).

유효한 변수 이름:

  • 정수
  • 정수 _ab;
  • 정수 a30;

잘못된 변수 이름:

  • 정수 4;
  • intxy;
  • 정수 더블;

C++ 식별자

C++ 식별자는 변수, 함수, 클래스, 모듈 또는 기타 사용자 정의 항목을 식별하는 데 사용됩니다. A ~ Z 또는 a ~ z 또는 밑줄(_)로 시작하고 그 뒤에 0개 이상의 문자와 0~9개가 옵니다. C++에서는 식별자 내에서 @, $, %와 같은 구두점을 허용하지 않습니다. 대소문자를 구분하는 프로그래밍 언어입니다. 따라서 인력과 인력은 C++에서 두 개의 다른 식별자입니다.

C++ 데이터 유형

유형키워드
성격
부울부울
부동 소수점뜨다
이중 부동 소수점더블
정수정수
가치 없는무효의
와이드 문자wchar_t
유형 일반적인 비트 폭 일반적인 범위
1바이트-127 ~ 127 또는 0 ~ 255
서명되지 않은 문자1바이트0 ~ 255
서명된 문자1바이트-127 ~ 127
wchar_t2 또는 4바이트와이드 문자 1개
정수4 바이트-2147483648 ~ 2147483647
부호없는 정수4 바이트0 ~ 4294967295
서명된 정수4 바이트-2147483648 ~ 2147483647
짧은 정수2바이트-32768 ~ 32767
뜨다4 바이트
부호 없는 짧은 정수2바이트0 ~ 65,535
서명된 짧은 정수2바이트-32768 ~ 32767
긴 정수8바이트-2,147,483,648 ~ 2,147,483,647
서명된 긴 정수8바이트long int와 동일
부호 없는 긴 정수8바이트0 ~ 4,294,967,295
long long int8바이트-(2^63) ~ (2^63)-1
부호 없는 long long int8바이트0 ~ 18,446,744,073,709,551,615
더블8바이트
롱 더블12바이트

C++ 상수/리터럴

상수는 프로그램이 변경할 수 있는 고정 값을 나타내며 리터럴이라고 합니다.

상수는 원시 데이터 유형 중 하나일 수 있으며 정수 숫자, 문자, 부동 소수점 숫자, 문자열 및 부울 값으로 나뉩니다.

정수 리터럴

정수 리터럴은 10진수, 8진수 또는 16진수 상수입니다.

정수 리터럴에는 각각 long 및 unsigned에 대해 L과 U의 조합인 접미사가 있습니다. 접미사는 소문자 또는 대문자일 수 있으며 임의의 순서로 사용할 수 있습니다.

예: 212, 215u, 0xFeeL, 078, 032UU

부동 소수점 리터럴

부동 소수점 리터럴에는 정수 부분, 소수 부분, 소수점 및 지수 부분이 있습니다. 부동 소수점 리터럴은 10진수 형식이나 지수 형식으로 나타낼 수 있습니다.

소수점 형식을 사용하여 나타낼 때는 소수점, 지수 또는 둘 다를 포함해야 합니다. 지수 형식을 사용하여 의미하는 동안 분수 부분, 정수 부분 또는 둘 다 있어야 합니다. 부호 있는 지수는 E 또는 e로 시작됩니다.

부울 리터럴

두 개의 부울 리터럴이 있습니다.

  • true 값은 true를 나타냅니다.
  • false를 나타내는 false 값입니다.

문자 리터럴

문자 리터럴은 작은따옴표로 묶습니다. 리터럴이 L로 시작하는 경우 와이드 문자 리터럴이며 wchar_t 유형의 변수에 저장해야 합니다. 그렇지 않으면 좁은 문자 리터럴이며 char 유형의 단순 변수에 저장됩니다.

탈출 시퀀스 의미
\ 캐릭터
'' 캐릭터
캐릭터
?? 캐릭터
에게경고 또는 벨
역행 키이
에프양식 피드
N개행
아르 자형캐리지 리턴
가로 탭
V세로 탭
ooo1~3자리의 8진수
xhh . . .하나 이상의 숫자의 16진수

C++ 스토리지 클래스

자동 스토리지 클래스

모든 지역 변수에 대한 기본 스토리지 클래스입니다.

통사론

|_+_|

레지스터 스토리지 클래스

RAM 대신 레지스터에 저장되는 지역 변수를 정의하는 데 사용됩니다. 이는 변수의 최대 크기가 레지스터 크기와 같으며 '&' 연산자를 적용할 수 없음을 의미합니다.

통사론

|_+_|

정적 스토리지 클래스

이것은 컴파일러에게 지역 변수를 생성하고 파괴하는 대신 프로그램 중에 존재하도록 합니다. 따라서 지역 변수를 정적으로 만들면 함수 호출 간에 값을 유지할 수 있습니다.

외부 스토리지 클래스

모든 프로그램 파일에서 볼 수 있는 전역 변수의 참조를 제공하는 데 사용됩니다. 'extern'을 사용하면 변수를 초기화할 수 없습니다.

변경 가능한 스토리지 클래스

가변 지정자는 클래스 객체에 적용됩니다. const 멤버 함수를 재정의하는 개체의 멤버를 제공합니다. 즉, 가변 멤버는 const 멤버 함수로 수정할 수 있습니다.

C++ 수정자 유형

C++는 char, int 및 double 데이터 유형을 제공하여 앞에 수정자를 가집니다. 수식어를 사용하여 다양한 상황의 요구에 보다 정확하게 맞도록 기본 유형의 의미를 변경합니다.

데이터 유형 수정자는 아래에 언급되어 있습니다.

  • 서명
  • 서명되지 않은
  • 짧은

수식자 signed, unsigned, long 및 short는 정수 기본 유형에 적용됩니다. 또한 char에는 signed와 unsigned가 적용되고 double에는 long이 적용됩니다.

signed 및 unsigned 수정자는 long 또는 short 수정자의 접두사로 사용됩니다.

한정자의 유형

    상수: 유형의 객체 상수 실행 중에는 프로그램에서 변경할 수 없습니다.휘발성 물질: 편집 휘발성 물질 프로그램에서 명시적으로 지정하지 않은 방식으로 변수 값이 변경될 수 있음을 컴파일러에 알립니다.얽매다: 다음으로 한정된 포인터 얽매다 가리키는 개체에 액세스할 수 있는 유일한 수단입니다. C99는 제한이라는 새로운 유형의 한정자를 추가합니다.

예시

|_+_|

산출

|_+_|

C++의 연산자

연산자는 컴파일러가 특정 수학적 또는 논리적 조작을 수행하는 데 도움이 되는 기호입니다. C++에는 다양한 내장 연산자가 있으며 다음 유형의 연산자를 제공합니다.

  • 산술 연산자
  • 논리 연산자
  • 비트 연산자
  • 할당 연산자
  • 관계 연산자
  • 기타 연산자

산술 연산자

산술 연산자는 변수 또는 두 값 간의 산술 연산을 수행하는 데 사용되는 연산자일 뿐입니다.

연산자 설명 통사론
+두 개의 피연산자를 추가합니다.a+b
*두 피연산자를 곱합니다.ㄱ*ㄴ
두 피연산자를 뺍니다.a-b
/첫 번째 피연산자를 두 번째로 나눕니다.a/b
%첫 번째 피연산자를 두 번째 피연산자로 나눈 나머지를 반환합니다.a%b
++정수 값을 1 증가시킵니다.++
정수 값을 1 감소합니다.에게-

논리 연산자

C++의 논리 연산자는 변수의 참 또는 거짓 값을 결합하여 결과 진리 값을 알아낼 수 있습니다.

연산자 설명 통사론
또는 (||)피연산자 중 하나라도 참이면 참(A || B)는 참입니다.
그리고 (&&)두 피연산자가 모두 참이면 참(A && B)는 거짓입니다.
아니다 (!)조건이 참이면 논리 NOT 연산자는 거짓을 만듭니다.!(A && B)는 참입니다.

비트 연산자

C++에서 비트 연산자는 정수에 대해 비트 계산을 수행합니다. 비트 연산자: 두 비트가 모두 1이면 1을 반환하고 그렇지 않으면 0입니다. 예: a = 10 = 1010(이진수) b = 4 = 0100(이진수 a & b = 1010 & 0100 = 0000 = 0(10진수) 비트 또는 연산자: 반환 비트 중 하나가 1이면 1이고 그렇지 않으면 0입니다.

연산자 설명 통사론
>>이진 오른쪽 시프트 x>>엑스>>
<< 이진 왼쪽 시프트엑스<<
^^이진 XORx ^ y
&이진 ANDx & y
|이진 OR엑스 | 와이
~바이너리 NOT~x

할당 연산자

할당 연산자는 변수에 값을 할당합니다. a = 5는 오른쪽의 값 5를 왼쪽의 변수 a로 설정하는 할당 연산자입니다.

연산자 설명 통사론
=좌변의 피연산자에 우변 표현식의 값을 할당합니다.a=b+c
+=왼쪽 피연산자와 오른쪽 피연산자를 더한 다음 왼쪽 피연산자에 할당합니다.a+=b a=a+b
-=왼쪽 피연산자에서 오른쪽 피연산자를 빼서 왼쪽 피연산자에 할당합니다.a-=b a=a-b
/=왼쪽 피연산자를 오른쪽 피연산자로 나눈 다음 왼쪽 피연산자에 할당합니다.a/=b a=a/b
%=왼쪽 및 오른쪽 피연산자를 사용하여 모듈러스를 취하고 결과를 왼쪽 피연산자에 할당합니다.a%=b a=a%b
*=피연산자를 사용하여 지수 값을 계산하고 왼쪽 피연산자에 값을 할당합니다.a*=b a=a*b
&=피연산자에 대해 비트 AND를 수행하고 왼쪽 피연산자에 값을 할당합니다.a&=b a=a&b
|=피연산자에 대해 Bitwise OR을 수행하고 왼쪽 피연산자에 값을 할당합니다.a|=b a=a|b
^=피연산자에 대해 Bitwise OR을 수행하고 왼쪽 피연산자에 값을 할당합니다.a^=b a=a^b
>>=피연산자에 대해 Bitwise 오른쪽 시프트를 수행하고 왼쪽 피연산자에 값을 할당합니다.a>>=b a=a>>b
<<=피연산자에 비트 단위 왼쪽 시프트를 수행하고 왼쪽 피연산자에 값을 할당합니다.에게<<= b a= a << b

관계 연산자

관계 연산자는 두 값 또는 개체를 비교하는 데 사용되는 연산자입니다.

연산자 설명 통사론
>보다 큰x > y
<미만엑스
==동일한x == y
!=같지 않음x != y
>=크거나 같음x >= y
<= 이하엑스<= y

기타 연산자

운영자 설명
질환? X : 예조건이 참이면 X 값을 반환하고 그렇지 않으면 Y 값을 반환합니다.
,일련의 작업이 수행되도록 합니다. 쉼표 값은 쉼표로 구분된 목록의 마지막 표현식 값입니다.
크기변수의 크기를 반환합니다. 예를 들어 sizeof(a), 여기서 'a'는 정수이고 4를 반환합니다.
*변수에 대한 포인터입니다. 예를 들어 *var; 변수 var를 가리킬 것입니다.
깁스한 데이터 유형을 다른 데이터 유형으로 변환합니다.
. (점) 및 ->(화살표)클래스, 구조체 및 공용체의 개별 구성원을 참조하는 데 사용됩니다.
&변수의 주소를 반환합니다.

C++ 루프

for 루프

C++ for 루프는 프로그램의 일부를 여러 번 반복하는 데 사용됩니다. 반복 횟수가 고정되어 있으면 while 또는 do-while 루프보다 for 루프를 사용하는 것이 좋습니다.

C++ for 루프는 C/C#과 동일합니다. 변수를 초기화하고, 조건을 확인하고, 값을 증감할 수 있습니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

중첩 For 루프

C++에서는 다른 for 루프 내에서 for 루프를 사용할 수 있습니다. 중첩 for 루프라고 합니다. 내부 루프는 외부 루프가 한 번 실행될 때 완전히 실행됩니다. 따라서 외부 루프와 내부 루프를 4번 실행하면 내부 루프는 외부 루프마다 4번, 즉 총 16번 실행됩니다.

예시

|_+_|

산출

|_+_|

동안 루프

C++에서 while 루프는 프로그램의 일부를 여러 번 반복하는 데 사용됩니다. 반복 횟수가 고정되어 있지 않으면 for 루프보다 while 루프를 사용하는 것이 좋습니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

중첩된 While 루프

C++에서는 다른 while 루프 내에서 while 루프를 사용할 수 있습니다. 중첩된 while 루프라고 합니다. 중첩된 while 루프는 외부 루프가 한 번 실행될 때 실행됩니다.

예시

|_+_|

산출

|_+_|

Do-while 루프

C++ do-while 루프는 프로그램의 일부를 여러 번 반복하는 데 사용됩니다. 반복 횟수가 고정되어 있지 않고 루프를 한 번 이상 실행해야 하는 경우 do-while 루프를 사용하는 것이 좋습니다.

C++ do-while 루프는 루프 본문 이후에 조건을 확인하기 때문에 한 번 이상 실행됩니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

중첩 Do-While 루프

C++에서 다른 do-while 루프 내에서 do-while 루프를 사용하는 경우 이를 중첩 do-while 루프라고 합니다. 중첩된 do-while 루프는 각 외부 do-while 루프에 대해 완전히 실행됩니다.

예시

|_+_|

산출

|_+_|

의사 결정 진술

실생활에서 결정을 내려야 하는 상황이 있으며 이러한 결정에 따라 다음에 해야 할 일을 결정합니다. 몇 가지 결정을 내려야 하는 프로그래밍에서도 비슷한 문제가 발생하며 이러한 결정을 기반으로 다음 코드 블록을 실행합니다.

프로그래밍 언어의 의사 결정 문은 프로그램 실행 흐름의 방향을 결정합니다. C++에서 사용할 수 있는 의사 결정 문은 다음과 같습니다.

  • if 문
  • if..else 문
  • 중첩된 if 문
  • if-else-if 사다리
  • 점프 문:
    • 부서지다
    • 계속하다
    • goto
    • 반품

if 문

if 문은 간단한 의사 결정 문입니다. 명령문 블록을 실행할지 여부를 결정하는 데 사용됩니다. 조건이 true이면 명령문 블록이 실행되고 그렇지 않으면 실행되지 않습니다.

통사론

|_+_|

여기, 정황 평가 후 참 또는 거짓이 될 것입니다. if 문은 부울 값을 허용합니다.

예시

|_+_|

산출

|_+_|

if else 문

if 문은 조건이 참이면 명령문 블록을 실행하고 조건이 거짓이면 실행하지 않음을 알려줍니다. if 문과 함께 else 문을 사용하여 조건이 false일 때 코드 블록을 실행할 수 있습니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

중첩된 if 문

C++에서 중첩된 if는 다른 if 문을 대상으로 하는 if 문입니다. 중첩된 if 문은 다른 if 문 안에 있는 if 문을 의미합니다. 예, C와 C++ 모두 if 문 안에 중첩된 if 문을 제공합니다. 즉, 다른 if 문 안에 if 문을 둘 수 있습니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

if-else-if 사다리

사용자는 다양한 옵션 중에서 결정할 수 있습니다. if 문은 위에서 아래로 실행됩니다. 조건이 if를 제어하는 ​​즉시 해당 명령문이 실행되고 나머지 else-if 래더가 종료됩니다. 조건이 true가 아닌 경우 마지막 및 최종 명령문이 수행됩니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

점프 문

부서지다

이 문은 루프를 종료하는 데 사용됩니다. 루프 내에서 break 문을 만나면 루프 반복이 거기서 멈추고 제어는 루프 다음의 첫 번째 문으로 즉시 반환됩니다.

통사론
부서지다;

break 문은 루프의 실제 반복 횟수가 확실하지 않거나 일부 조건에 따라 루프를 종료하는 상황에서 사용됩니다.

예시

|_+_|

산출

|_+_|

계속하다

continue 문은 break 문의 반대입니다. 루프를 종료하는 대신 루프의 다음 반복을 강제 실행합니다.

continue 문은 루프가 다음 반복을 실행하도록 합니다. continue 문이 실행되면 continue 문 다음의 루프 내부 코드를 건너뛰고 다음 반복이 시작됩니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

이동

C++의 goto 문은 함수 내에서 한 지점에서 다른 지점으로 점프하는 데 사용되는 무조건 점프 문을 나타냅니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

반품

C++에서 반환은 함수에 대한 실행 흐름을 반환합니다. 이 명령문에는 조건문이 필요하지 않습니다. 명령문이 실행되면 프로그램의 흐름이 즉시 중지되고 호출된 컨트롤을 반환합니다. return 문은 void 함수에 대해 아무 것도 반환하거나 반환하지 않을 수 있지만 반환 값은 void가 아닌 함수에 대해 반환되어야 합니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

C++ 함수

함수는 입력을 받아 처리하고 출력을 반환하는 명령문 그룹을 나타냅니다. 기능의 목적은 계속해서 수행되는 작업을 결합하는 것입니다. 다양한 입력이 있는 경우 동일한 코드를 다시 작성할 필요가 없습니다. 매개변수라고 하는 다른 데이터 세트를 사용하여 함수를 호출할 수 있습니다.

C++ 프로그램에는 최소한 하나의 함수인 main() 함수가 있습니다.

함수 정의

C++의 함수 정의는 함수 헤더와 본문으로 구성됩니다.

    반환 유형- 값을 반환할 수 있습니다. 일부 함수는 값을 반환하지 않고 작업을 수행합니다. 여기에서 return_type은 키워드입니다. 무효의 .기능 이름- 함수의 실제 이름입니다. 함수 이름과 목록은 함께 함수 서명을 구성합니다.매개변수- 매개변수는 자리 표시자와 같습니다. 함수가 호출되면 매개변수에 값을 전달합니다. 이 값을 실제 매개변수 또는 인수라고 합니다. 매개변수 목록은 함수의 매개변수 순서, 유형 및 개수를 나타냅니다.기능 본체− 본문은 함수가 하는 일을 정의하는 명령문의 모음을 포함합니다.

예시

|_+_|

함수 선언

C++에서 함수는 사용하기 전에 선언해야 합니다. 반환 값, 이름 및 인수 유형을 제공하여 함수를 선언할 수 있습니다. 인수 조건은 선택 사항입니다. 함수 정의는 함수 선언으로 간주됩니다.

예시

|_+_|

함수 호출

C++ 함수를 만드는 동안 함수가 수행해야 하는 작업을 정의합니다. 함수를 사용하려면 해당 함수를 호출하거나 호출해야 합니다.

프로그램이 함수를 호출하면 프로그램 제어가 호출된 함수로 이전됩니다. 호출된 함수는 정의된 작업을 수행하고 반환 문이 실행되거나 함수 종료 중괄호에 도달하면 프로그램 제어를 메인 프로그램에 반환합니다.

예시

|_+_|

함수 인수

함수가 인수를 사용하는 경우 인수의 값을 허용하는 변수를 선언해야 합니다. 이러한 변수는 다음과 같이 알려져 있습니다. 함수의 형식 매개변수.

    가치에 의한 호출: 인수의 실제 값을 함수의 형식 매개변수에 복사합니다. 함수 내부의 매개변수에 대한 변경 사항은 인수에 영향을 미치지 않습니다.포인터로 호출: 형식 매개변수에 인수의 주소를 복사합니다. 이 함수 내에서 주소는 호출에 사용된 인수에 액세스하는 데 사용됩니다. 이는 매개변수에 대한 변경 사항이 인수에 영향을 미친다는 것을 의미합니다.참조로 호출: 형식 매개변수에 인수의 참조를 복사합니다. 이 함수 내에서 참조는 호출에 사용된 인수에 액세스하는 데 사용됩니다. 이는 매개변수에 대한 변경 사항이 인수에 영향을 미친다는 것을 의미합니다.

C++ 숫자

일반적으로 숫자로 작업할 때 int, short, long, float, double 등과 같은 기본 데이터 유형을 사용합니다. 데이터 유형의 수, 가능한 값 및 숫자 범위는 C++ 데이터 유형에 대해 논의하면서 설명했습니다.

예시

|_+_|

산출

|_+_|

C++의 수학 연산자

예 아니오 기능 목적
하나 이중 죄(이중);각도(더블)를 취하여 사인을 반환합니다.
이중 코사인(이중);각도(더블)를 취하여 코사인을 반환합니다.
더블 탄(더블);각도(더블)를 취하고 탄젠트를 반환합니다.
4 더블 포(더블, 더블);첫 번째는 올리고 싶은 숫자이고 두 번째는 올리고 싶은 숫자입니다.
5 이중 로그(이중);숫자를 받아 해당 숫자의 자연 로그를 반환합니다.
6 이중 가설(이중, 이중);이것을 직각 삼각형의 두 변의 길이로 전달하면 빗변의 길이가 반환됩니다.
7 더블 제곱(더블);함수에 숫자를 전달하면 제곱근이 됩니다.
8 정수 abs(int);전달된 정수의 절대값을 반환합니다.
9 2층(더블);전달된 인수보다 작거나 같은 정수를 찾습니다.
10 이중 팹(이중);전달된 십진수의 절대값을 반환합니다.

예시

|_+_|

산출

|_+_|

C++ 배열

C++의 배열은 인접한 메모리 위치에 저장된 항목의 모음이며 배열의 인덱스를 사용하여 요소에 무작위로 액세스할 수 있습니다. 데이터 유형이 모든 요소에 대해 동일해야 하므로 유사한 요소를 저장하는 데 사용됩니다. char, int, float, double 등과 같은 기본 데이터 유형을 저장할 수 있습니다. 여기에 추가하기 위해 C++의 배열은 구조, 포인터 등과 같은 파생 데이터 유형을 저장할 수 있습니다. 다음은 배열의 그림 같은 표현입니다. .

배열 선언

통사론

|_+_|

예시

|_+_|

여기,

  • int - 저장할 요소의 유형
  • y - 배열의 이름
  • 4 – 배열의 크기

배열의 요소 액세스

배열의 각 요소는 숫자로 연결됩니다. 숫자를 배열 인덱스라고 합니다. 인덱스를 사용하여 배열의 요소에 액세스할 수 있습니다.

통사론

|_+_|

예시

|_+_|

다음은 C++ 배열의 몇 가지 중요한 개념입니다.

    다차원 배열: 2차원 배열은 다차원 배열의 가장 단순한 형태입니다.배열에 대한 포인터: 인덱스 없이 배열 이름을 언급하여 배열의 첫 번째 요소에 대한 포인터를 생성합니다.함수에 배열 전달: 인덱스 없이 배열의 이름을 지정하여 배열에 대한 포인터를 함수에 전달합니다.함수에서 배열 반환: C++에서는 함수가 배열을 반환할 수 있습니다.

C++ 문자열

캐릭터 모음집입니다. C++ 프로그래밍 언어에는 두 가지 유형의 문자열이 사용됩니다.

  • 문자열 클래스의 객체인 문자열
  • C-스트링

문자열 클래스

C++ 라이브러리는 다음을 제공합니다. 위에서 언급한 모든 작업과 추가로 훨씬 더 많은 기능을 지원하는 클래스 유형입니다.

예시

|_+_|

산출

|_+_|

C 문자열

이 문자열은 C 언어 내에서 시작되었으며 C++ 내에서 지원됩니다. 이 문자열은 널 문자 ''으로 끝나는 1차원 문자 배열입니다. 따라서 null로 끝나는 문자열에는 null이 뒤따르는 문자열을 구성하는 문자가 포함됩니다.

예시

|_+_|

산출

|_+_|

null로 끝나는 문자열을 조작하는 몇 가지 함수

    strcpy(s1, s2);

문자열 s2를 문자열 s1에 복사합니다.

    strcat(s1, s2);

문자열 s2를 문자열 s1의 끝에 연결합니다.

    strstr(s1, s2);

문자열 s1에서 문자열 s2의 발생에 대한 포인터를 반환합니다.

    strlen(s1);

문자열 s1의 길이를 반환합니다.

    strcmp(s1, s2);

s1과 s2가 같으면 0을 반환합니다. s1s2이면 0보다 작습니다.

    strchr(s1, ch);

문자열 s1에서 문자 ch의 발생에 대한 포인터를 반환합니다.

C++ 포인터

포인터는 주소를 나타냅니다. 이를 통해 프로그램은 참조별 호출을 시뮬레이션하고 동적 데이터 구조를 생성 및 조작할 수 있습니다.

통사론

|_+_|

포인터를 사용하는 방법?

  • 먼저 포인터 변수를 정의합니다.
  • 이제 변수의 주소를 반환하는 (&)를 사용하여 포인터에 변수의 주소를 할당합니다.
  • 피연산자가 지정한 주소에 있는 변수의 값을 반환하는 (*)를 사용하여 주소에 저장된 값에 액세스합니다.

포인터의 몇 가지 개념

    널 포인터: 다양한 표준 라이브러리에 정의되어 있는 0의 값을 갖는 상수입니다.포인터 산술: 포인터에 4개의 산술 연산자를 사용할 수 있습니다. ++, –, +, –포인터 대 배열: 포인터와 배열이 밀접하게 연결되어 있습니다.포인터 배열: 여러 포인터를 보유하도록 배열을 정의할 수 있습니다.포인터에 대한 포인터: C++는 포인터 등에 대한 포인터를 제공합니다.함수에 포인터 전달: 참조로 전달하거나 주소로 전달하면 호출된 함수에 의해 호출된 함수에서 주어진 명령문이 변경될 수 있습니다.함수에서 포인터 반환: C++는 지역 변수, 정적 변수, 동적으로 할당된 메모리에 대한 포인터를 반환하는 기능을 제공합니다.

예시

|_+_|

산출

|_+_|

C++ 참조

참조 변수는 이미 존재하는 변수의 이름입니다. 참조가 초기화되면 변수 이름이나 참조 이름을 사용하여 변수를 참조할 수 있습니다.

예시

|_+_|

산출

|_+_|

C++ 날짜 및 시간

C++ 라이브러리는 적절한 날짜 유형을 제공하지 않습니다. C에서 날짜 및 시간 조작을 위한 구조 및 함수를 상속합니다. 날짜 및 시간 관련 함수 및 구조에 액세스하려면 C++ 프로그램에 헤더 파일을 포함해야 합니다.

네 가지 시간 관련 유형이 있습니다: clock_t, time_t, size_t 및 tm. clock_t, size_t 및 time_t 유형은 시스템 시간과 날짜를 정수로 나타낼 수 있습니다.

예시

|_+_|

몇 가지 중요한 기능

    time_t 시간(time_t *시간);

1970년 1월 1일 이후 경과된 몇 초의 현재 달력 시간을 반환합니다. 시스템에 시간이 없으면 .1이 반환됩니다.

    char *ctime(const time_t *time);

형식의 문자열에 대한 포인터를 반환합니다. 일 월 년 시:분: 초.

    struct tm *localtime(const time_t *time);

에 대한 포인터를 반환합니다. 티엠 현지 시간을 나타내는 구조체.

    clock_t 시계(무효);

호출 프로그램이 실행된 시간에 가까운 값을 반환합니다. 시간을 사용할 수 없는 경우 값 .1이 반환됩니다.

    char * asctime ( const struct tm * time );

요일 월 날짜 시:분: 초 형식으로 변환된 시간이 가리키는 구조에 저장된 정보를 포함하는 문자열에 대한 포인터를 반환합니다.

    struct tm *gmtime(const time_t *time);

tm 구조의 형태로 시간에 대한 포인터를 반환합니다.

    time_t mktime(구조 tm *시간);

시간이 가리키는 구조체에서 찾은 달력 시간을 반환합니다.

    이중 difftime( time_t time2, time_t time1 );

time1과 time2의 차이를 초 단위로 계산합니다.

    size_t strftime();

날짜와 시간을 특정 형식으로 지정하는 데 사용할 수 있습니다.

C++ 데이터 구조

C++ 배열을 사용하면 같은 종류의 여러 데이터 항목을 결합하는 변수를 정의할 수 있습니다. 그래도 구조 다른 종류의 데이터 항목을 결합할 수 있는 또 다른 사용자 정의 데이터 유형입니다. 구조는 레코드를 나타내는 데 사용됩니다.

구조 정의

구조를 정의하려면 struct 문을 사용해야 합니다. struct 문은 프로그램에 대해 둘 이상의 멤버가 있는 데이터 형식을 정의합니다.

|_+_|

그만큼 구조 태그 선택 사항입니다. 정의 끝에서 마지막 세미콜론 앞에 하나 이상의 구조 변수를 지정해야 합니다.

구조 멤버 액세스

구조의 모든 구성원에 액세스하려면 다음을 사용할 수 있습니다. 멤버 액세스 연산자(.) . 멤버 액세스 연산자는 구조 변수 이름과 액세스하려는 구조 멤버 사이의 마침표로 코딩됩니다. 당신은 사용할 것입니다 구조체 구조체 유형의 변수를 정의하는 키워드입니다.

함수 인수로서의 구조

다른 변수나 포인터를 전달하는 것과 같은 방식으로 구조를 함수 인수로 전달할 수 있습니다.

예시

|_+_|

산출

|_+_|

C++ 클래스 및 개체

C++의 모든 것은 속성 및 메서드와 함께 클래스 및 개체와 관련이 있습니다. 예: 실생활에서 버스는 물체 . 버스에는 속성 , 무게 및 색상과 같은 행동 양식 , 드라이브 및 브레이크와 같은.

속성과 메소드는 변수 그리고 기능 클래스에 속하는 것. 이를 클래스 멤버라고 합니다. 클래스는 프로그램에서 사용할 수 있는 사용자 정의 데이터 유형이며 객체 생성자 또는 객체 생성을 위한 청사진으로 작동합니다.

클래스 만들기

클래스를 생성하려면 다음을 사용해야 합니다. 등급 예어:

예시

|_+_|

개체 만들기

C++에서 객체는 클래스에서 생성됩니다.

객체를 생성하려면 클래스 이름과 객체 이름을 차례로 지정해야 합니다. 클래스 속성에 액세스하려면 객체에 점 구문(.)을 사용합니다.

예시

|_+_|

세부적인 몇 가지 개념

    클래스 멤버 함수: 멤버 함수는 다른 변수와 마찬가지로 클래스 정의 내에 프로토타입이 있는 함수입니다.클래스 액세스 수정자: 클래스 멤버는 private, public, protected로 정의할 수 있습니다. 기본적으로 비공개입니다.빌더: 생성자는 새로운 객체가 생성될 때 호출되는 클래스의 함수입니다.파괴자: 소멸자는 생성된 객체가 삭제될 때 호출되는 함수입니다.복사 생성자:이전에 생성한 동일한 클래스의 객체로 초기화하여 객체를 생성하는 생성자입니다.친구 기능: 클래스의 private 및 protected 멤버에 대한 전체 액세스 권한을 제공합니다.인라인 함수: 컴파일러는 함수를 호출하는 대신 함수 본문의 코드를 확장합니다.이 포인터: 모든 객체에는 특별한 포인터가 있습니다. 이것 개체 자체를 가리키는 것입니다.클래스의 정적 멤버: 클래스의 데이터 멤버와 함수 멤버는 모두 정적으로 선언될 수 있습니다.

C++ 상속

상속은 개체가 부모 개체의 모든 속성과 동작을 자동으로 획득하는 프로세스입니다. 다른 클래스에 정의된 속성 및 작업을 수정할 수 있습니다.

다른 클래스의 멤버를 상속하는 클래스를 파생 클래스라고 하고, 멤버가 상속되는 클래스를 기본 클래스라고 합니다. 파생 클래스는 기본 클래스에 대한 특수 클래스입니다.

상속 유형

    단일 상속파생 클래스가 하나의 기본 클래스에서만 상속되는 상속 유형입니다.

'A'는 기본 클래스이고,

'B'는 파생 클래스입니다.

씨플러스
    다단계 상속다른 파생 클래스에서 클래스를 파생시키는 프로세스입니다. 클래스 C는 클래스 B의 속성을 상속하고 클래스 B는 클래스 B의 속성을 상속합니다. A는 B의 부모 클래스이고 클래스 B는 C의 부모 클래스입니다.
img 617dd1cc84e68
    다중 상속파생 클래스는 하나 이상의 기본 클래스에서 생성됩니다. 클래스 C는 클래스 B와 클래스 A의 속성과 동작을 상속합니다. 따라서 여기서 클래스 A와 클래스 B는 클래스 C의 부모 클래스입니다.
img 617dd1ccd67cc
  • 다중 경로 상속, 파생 클래스는 다른 파생 클래스와 다른 파생 클래스의 동일한 기본 클래스에서 생성됩니다. 이 상속은 에서 지원하지 않습니다. 그물 C#, F# 등과 같은 언어

클래스 D는 클래스 C와 클래스 B, 클래스 A의 속성과 동작을 상속합니다. 클래스 C, 클래스 B는 클래스 A를 상속합니다. 클래스 A는 클래스 B, 클래스 C 및 클래스 D의 부모입니다.

img 617dd1cd9230a
    하이브리드 상속둘 이상의 상속의 조합입니다. 따라서 다중 수준 상속과 다중 상속 및 다중 수준 상속과 다중 경로 상속 다중 수준 및 다중 상속의 조합일 수 있습니다.
img 617dd1cdf0c4e

C++ 액세스 수정자

액세스 한정자는 데이터 은닉으로 알려진 객체 지향 프로그래밍의 필수 측면을 구현하는 데 사용됩니다. 클래스의 액세스 수정자는 클래스 구성원에게 액세스 권한을 할당하는 데 사용됩니다. 외부 함수에서 직접 액세스하지 못하도록 클래스 멤버에 몇 가지 제한을 설정합니다.

C++에서 사용할 수 있는 세 가지 유형의 액세스 한정자가 있습니다.

  • 공공의
  • 사적인
  • 보호

자세히 논의해 보겠습니다.

공공의

public 지정자 아래에 선언된 모든 클래스 멤버는 모든 사람이 사용할 수 있습니다. public으로 선언된 멤버 함수는 다른 클래스 및 함수에서도 액세스할 수 있습니다. 클래스의 공용 멤버는 해당 클래스의 개체와 함께 액세스 연산자(.)를 사용하여 프로그램의 어디에서나 액세스할 수 있습니다.

예시

|_+_|

산출

|_+_|

사적인

클래스 내부의 멤버 함수는 private으로 선언된 클래스 멤버에만 액세스할 수 있습니다. 클래스 외부의 객체나 함수에서 직접 액세스할 수 없습니다. 친구 함수만 클래스 구성원의 개인 데이터에 액세스할 수 있습니다.

예시

|_+_|

산출

|_+_|

보호

보호된 액세스 수정자는 친구 클래스의 도움으로 보호된 것으로 선언된 클래스 멤버가 모든 파생 클래스에서 액세스할 수 있다는 차이점이 없는 한 해당 클래스 외부에서 액세스할 수 없다는 점에서 개인용 액세스 수정자와 동일합니다. 그것도 그 클래스의.

예시

|_+_|

산출

|_+_|

C++ 오버로딩

C++ 프로그래밍 언어를 사용하면 하나 이상의 정의를 지정할 수 있습니다. 기능 이름 또는 운영자 같은 범위에서 함수 오버로딩 그리고 연산자 오버로딩 , 각각.

오버로드된 선언은 동일한 범위에서 이전에 선언된 선언과 동일한 이름으로 선언됩니다. 단, 두 선언 모두 인수와 정의가 다릅니다.

함수 오버로딩

함수 오버로딩은 이름은 같지만 매개변수 목록이 다른 둘 이상의 함수를 제공하는 기능입니다.

예시

|_+_|

산출

|_+_|

C++ 다형성

연산자 오버로딩

연산자가 사용자 정의 클래스에 대해 작동하도록 할 수 있습니다. 이것은 C++가 데이터 유형에 대한 특별한 의미를 연산자에 제공할 수 있음을 의미합니다. 이를 연산자 오버로딩이라고 합니다.

예시

|_+_|

산출

|_+_|

객체 지향 프로그래밍의 중요한 개념입니다. 하나 이상의 형식을 의미합니다. 즉, 동일한 엔터티가 다른 시나리오에서 다르게 동작합니다.

함수 재정의

기본 클래스와 파생 클래스에서 동일한 기능을 가질 수 있습니다. 파생 클래스의 개체를 사용하여 함수를 호출하면 기본 클래스가 아닌 파생 클래스의 함수가 실행됩니다.

따라서 함수를 호출하는 객체에 따라 다른 함수가 실행됩니다. 이것을 함수 재정의라고 합니다

예시

|_+_|

산출

|_+_|

C++ 가상 함수

C++에서 기본 클래스 포인터를 사용하여 파생 클래스의 개체를 가리키는 경우 함수를 재정의하지 못할 수 있습니다.

기본 클래스에서 가상 함수를 사용하면 이러한 경우에 함수를 재정의할 수 있습니다. 따라서 가상 기능은 기능 재정의에 해당합니다.

순수한 가상 기능

기본 클래스에 가상 함수를 포함하여 해당 클래스의 개체에 맞게 파생 클래스에서 재정의할 수 있지만 기본 클래스의 함수에 대해 제공할 수 있는 의미 있는 정의가 없을 수 있습니다. .

예시

|_+_|

C++ 데이터 추상화

데이터 추상화는 C++에서 객체 지향 프로그래밍의 필수 기능 중 하나입니다. 추상화는 관련 정보만 표시하고 세부 정보를 숨기는 것을 의미합니다. 데이터 추상화는 외부 세계의 데이터에 대한 필수 정보만 제공하고 배경 세부 사항이나 구현을 숨기는 것을 말합니다.

클래스를 사용한 추상화

클래스의 도움으로 C++에서 추상화를 구현할 수 있습니다. 이 클래스는 사용 가능한 액세스 지정자를 사용하여 데이터 멤버와 멤버 함수를 그룹화하는 데 도움이 됩니다. 클래스는 외부 세계에서 볼 수 있는 데이터 멤버와 그렇지 않은 데이터 멤버를 결정할 수 있습니다.

액세스 지정자를 사용한 추상화

액세스 지정자는 C++에서 추상화를 구현하는 데 중요한 역할을 합니다. 액세스 지정자를 사용하여 클래스 구성원에 대한 제한을 적용할 수 있습니다. 예를 들어:

  • 클래스에서 public으로 선언된 멤버는 프로그램의 어디에서나 액세스할 수 있습니다.
  • 클래스에서 private로 선언된 멤버는 클래스 내에서만 액세스할 수 있습니다. 클래스 외부의 코드 부분에서 액세스할 수 없습니다.

예시

|_+_|

산출

|_+_|

C++ 데이터 캡슐화

클래스라는 단일 단위에서 함수와 데이터 멤버를 결합하는 프로세스입니다. 이는 데이터에 직접 액세스하는 것을 방지하기 위한 것입니다. 그들에 대한 액세스는 클래스의 기능을 통해 제공됩니다. 데이터 은닉에 도움이 되는 객체 지향 프로그래밍의 인기 있는 기능 중 하나입니다.

이를 구현하려면

  • 모든 데이터 멤버를 비공개로 설정합니다.
  • set 함수가 데이터 멤버의 값을 설정하고 get 함수가 데이터 멤버의 값을 가져오는 방식으로 각 데이터 멤버에 대한 공개 setter 및 getter 함수를 만듭니다.

예시

|_+_|

산출

|_+_|

C++ 추상 클래스

C++ 클래스는 함수 중 하나를 vital>순수 가상 함수로 선언하여 추상화합니다. 순수한 가상 함수는 선언에 = 0을 배치하여 언급됩니다. 파생 클래스는 구현을 제공해야 합니다.

예시

|_+_|

산출

|_+_|

C++ 파일 및 스트림

예 아니오 데이터 형식 설명
하나 오프스트림 출력 파일 스트림을 나타내며 파일을 생성하고 파일에 정보를 쓰는 데 사용됩니다.
이프스트림 입력 파일 스트림을 나타내며 파일에서 정보를 읽는 데 사용됩니다.
fstream 일반적으로 파일 스트림을 나타내며 ofstream 및 ifstream의 기능을 모두 가지고 있습니다.

파일 열기

파일을 읽거나 쓰려면 먼저 파일을 열어야 합니다. fstream 또는 ofstream 객체는 쓰기를 위해 파일을 여는 데 사용할 수 있습니다. ifstream 객체는 읽기 전용으로 파일을 여는 데 사용됩니다.

예 아니오 모드 플래그 설명
하나 ios::에이트 파일에 대한 모든 출력은 끝에 추가됩니다.
iOS::앱 출력을 위해 파일을 열고 읽기 또는 쓰기 제어를 파일 끝으로 이동합니다.
ios::절단 파일이 이미 있는 경우 파일을 열기 전에 내용이 잘립니다.
4 iOS::아웃 쓰기 위해 파일을 엽니다.
5 iOS::에서 읽을 수 있도록 파일을 엽니다.

통사론

|_+_|

파일 닫기

C++ 프로그램이 종료되면 자동으로 모든 스트림을 플러시하고 할당된 모든 메모리를 해제하고 열려 있는 모든 파일을 닫습니다.

통사론

|_+_|

파일에서 읽기

스트림 추출 연산자(>>)를 사용하여 파일에서 프로그램으로 정보를 읽을 수 있습니다. 유일한 차이점은 cin 객체 대신 fstream 또는 ifstream 객체를 사용한다는 것입니다.

읽기 및 쓰기 예

|_+_|

산출

|_+_|

파일 위치 포인터

ostream과 istream은 모두 파일 위치 포인터를 재배치하기 위한 멤버 함수를 제공합니다. 이러한 멤버 함수는 ostream의 경우 seekp이고 istream의 경우 seekg입니다. seekp 및 seekg에 대한 인수는 긴 정수입니다. 탐색 방향을 나타내기 위해 두 번째 인수를 언급할 수 있습니다.

C++ 예외 처리

C++의 예외 처리는 런타임 오류를 처리하는 프로세스입니다. 런타임 오류 후에도 애플리케이션의 정상적인 흐름을 유지할 수 있도록 예외 처리를 수행합니다.

C++에서 예외는 런타임에 throw되는 이벤트 또는 개체입니다. 모든 예외는 std::exception 클래스에서 파생됩니다. 예외를 처리하지 않으면 예외 메시지를 출력하고 프로그램을 종료합니다.

예외 설명
std::bad_exception 예기치 않은 예외를 처리하는 데 사용됩니다.
std::logic_failure 코드를 읽어서 감지할 수 있습니다.
std::bad_typeid 일반적으로 typeid에 의해 throw됩니다.
표준::런타임_오류 코드를 읽어서 감지할 수 없습니다.
표준::예외 모든 표준 C++ 예외의 예외이자 상위 클래스입니다.
std::bad_cast 일반적으로 dynamic_cast에 의해 throw됩니다.
std::bad_alloc 일반적으로 new에 의해 던져집니다.

C++ 예외 처리는 세 가지 키워드를 기반으로 합니다. 시도하다, 잡다, 그리고 던지다 .

    노력하다- try 블록은 특정 예외가 활성화될 코드 블록을 식별합니다. 하나 이상의 catch 블록이 그 뒤를 따릅니다.잡다− 프로그램은 예외 처리기를 통해 예외를 포착합니다. catch 키워드는 예외 포착을 보여줍니다.던지다− 문제가 나타나면 프로그램에서 예외가 발생합니다. 이것은 throw 키워드를 사용하여 수행됩니다.

예시

|_+_|

C++ 동적 메모리

메모리는 두 부분으로 나뉩니다 -

    스택- 함수 내부에 선언된 모든 변수는 스택에서 메모리를 차지합니다.힙− 프로그램에서 사용하지 않는 메모리로 프로그램 실행 시 동적으로 메모리를 할당하기 위해 사용합니다.

프로그래머는 프로그램이 실행되는 동안 저장 공간을 동적으로 할당할 수 있습니다. 그래도 프로그래머는 새 변수 이름을 만들 수 없으며 이러한 이유로 동적 할당에는 두 가지 기준이 필요합니다.

  • 메모리에 다이내믹한 공간 만들기
  • 포인터에 주소 저장

메모리 할당 해제는 다른 데이터 저장소를 위해 공간 정리가 수행되는 이 개념의 일부이기도 합니다. 동적 메모리 할당을 해제하려면 delete 연산자를 사용할 수 있습니다. 따라서 동적 메모리 할당은 동적 메모리 할당을 위한 메모리 관리를 수동으로 수행하는 것을 의미합니다.

신규 및 삭제 연산자

여기서 데이터 유형은 배열을 포함하는 내장 데이터 유형이거나 사용자 정의 데이터 유형에 클래스 또는 구조가 있을 수 있습니다. 기본 제공 데이터 유형부터 시작하겠습니다.

통사론

|_+_|

동적으로 할당되지 않고 더 이상 필요하지 않은 변수가 느껴지면 다음을 사용하여 여유 저장소의 메모리를 해제할 수 있습니다. '삭제' 운영자.

통사론

|_+_|

예시

|_+_|

어레이의 동적 메모리 할당

당신이 프로그래머라면; 동일한 구문을 사용하여 문자 배열에 메모리를 할당하려고 합니다.

예시

|_+_|

네임스페이스는 글로벌 범위 더 좁은 범위로 네임스페이스 범위 . 이것은 또한 프로그램의 요소를 이름으로 참조되는 다른 논리적 범위로 구성할 수 있습니다. 네임스페이스는 C++에는 있지만 C에는 없는 기능입니다. 이름이 같은 여러 네임스페이스 블록이 허용됩니다. 블록 내의 모든 선언은 명명된 범위에서 선언됩니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

불연속 네임스페이스

네임스페이스는 여러 부분으로 정의되며 네임스페이스는 정의된 부분의 합으로 구성됩니다. 네임스페이스의 개별 부분은 여러 파일에 걸쳐 있습니다.

통사론

|_+_|

중첩된 네임스페이스

여기에서 다른 이름 공간 안에 하나의 이름 공간을 정의할 수 있습니다.

통사론

|_+_|

예시

|_+_|

C++ 템플릿

템플릿은 일반 프로그램을 작성할 수 있는 C++의 기능입니다. 즉, 템플릿을 사용하여 다양한 데이터 유형으로 작업하는 단일 함수 또는 클래스를 생성할 수 있습니다. 템플릿은 프로그램의 코드 유연성과 재사용성을 위해 더 큰 코드베이스에서 사용됩니다.

이러한 개념은 두 가지 방식으로 사용됩니다.

  • 기능 템플릿
  • 클래스 템플릿

함수 템플릿

기능 템플릿은 한 가지 주요 차이점이 있는 일반 기능처럼 작동합니다.

단일 함수 템플릿은 다른 데이터 유형에서 작동할 수 있지만 단일 일반 함수는 하나의 데이터 유형 세트와 작동할 수 있습니다.

일반적으로 여러 유형의 데이터에 대해 동일한 작업을 수행하려는 경우 함수 오버로딩을 사용하여 함수 선언이 있는 함수를 만들 수 있습니다.

그러나 더 적은 수의 유지 관리 가능한 코드를 작성하는 동일한 작업을 수행할 수 있으므로 더 나은 접근 방식은 함수 템플릿을 사용하는 것입니다.

예시

|_+_|

산출

|_+_|

클래스 템플릿

함수 템플릿과 마찬가지로 클래스 작업에 대한 클래스 템플릿을 만들 수 있습니다. 일반적으로 각 데이터 유형에 대해 다른 클래스를 생성하거나 단일 클래스 내에서 다른 멤버 변수 및 함수를 생성해야 합니다.

이것은 코드베이스를 불필요하게 부풀리게 하고 한 클래스/함수의 변경이 모든 클래스/함수에서 수행되어야 하기 때문에 유지하기 어려울 것입니다. 클래스 템플릿을 사용하면 모든 데이터 유형에 대해 동일한 코드를 쉽게 재사용할 수 있습니다.

예시

|_+_|

산출

|_+_|

C++ 전처리기

전처리기 지시문은 해시 기호(#)가 앞에 오는 프로그램 코드에 포함된 행입니다. 이 줄은 프로그래밍된 문이 아니라 전처리기에 대한 지시문입니다. 전처리기는 코드 컴파일이 시작되기 전에 코드를 검사하고 일반 문이 코드를 생성하기 전에 모든 지시문을 해결합니다.

전처리기 지시문은 한 줄의 코드로 확장됩니다. 개행 문자가 발견되는 즉시 전처리기 지시문이 종료됩니다.

전처리기 지시문에는 4가지 주요 유형이 있습니다.

  • 매크로
  • 파일 포함
  • 조건부 컴파일
  • 기타 지시문

매크로

매크로는 이름이 지정된 코드 조각입니다. 컴파일러는 이 이름을 만날 때마다 이름을 실제 코드 조각으로 바꿉니다. '#define' 지시문은 매크로를 정의하는 데 사용됩니다.

예시

|_+_|

산출

|_+_|

미리 정의된 C++ 매크로

    __라인__

여기에는 프로그램이 컴파일될 때 프로그램의 줄 번호가 포함됩니다.

    __파일__

그것은 컴파일될 때 프로그램의 현재 파일 이름을 포함합니다.

    __데이트__

여기에는 소스 파일을 개체 코드로 변환한 날짜인 문자열이 포함됩니다.

    __시각__

여기에는 프로그램이 컴파일된 시간인 시간:분:초 문자열이 포함됩니다.

파일 포함

이 전처리기 지시문은 컴파일러에게 프로그램에 파일을 포함하도록 지시합니다. 프로그램에서 사용자가 유지하는 두 가지 유형의 파일이 있습니다.

    헤더 파일 또는 표준 파일: 이 파일에는 printf(), scanf() 등과 같은 미리 정의된 함수의 정의가 포함되어 있습니다. 이러한 파일은 이러한 함수로 작업하기 위해 포함되어야 합니다. 다른 함수는 별도의 헤더 파일에 선언됩니다.사용자 정의 파일: 프로그램이 거대해지면 더 작은 파일로 나누어 필요할 때마다 포함하는 것이 좋습니다. 이러한 유형의 파일은 사용자 정의 파일입니다.

조건부 컴파일

프로그램의 특정 부분을 컴파일하거나 일부 조건에 따라 프로그램의 특정 부분의 컴파일을 건너뛰는 데 도움이 됩니다.

통사론

|_+_|

기타 지시문

위에서 언급한 지시문 외에도 일반적으로 사용되지 않는 지시문이 두 개 더 있습니다. 이것들은:

    #undef 지시문: #undef 지시문은 기존 매크로의 정의를 취소하는 데 사용됩니다.#pragma 지시문: 특수 목적 지시문으로 일부 기능을 켜거나 끌 때 사용합니다.

C++ 신호 처리

신호는 운영 체제가 프로그램을 조기에 종료하는 프로세스에 제공하는 중단입니다. UNIX에서 Ctrl+C를 누르면 리눅스 , Mac OS X 또는 Windows 시스템에서 인터럽트를 생성할 수 있습니다.

소프트웨어가 감지할 수 없는 신호가 있지만 프로그램에서 포착하고 허용 가능한 신호 기반 조치를 취할 수 있는 신호 목록이 있습니다. C++ 헤더 파일은 이러한 신호를 설명합니다.

예 아니오 신호 설명
하나 SIGFPE 제로 브레이크 또는 오버플로 연산과 같은 잘못된 산술 연산.
시가브트 중단 호출과 같은 비정상적인 프로그램 종료.
사인트 대화식 초점 신호 수신
4 밀봉하다 불법적인 지시의 발견.
5 시그텀 프로그램 종료 요청을 제출했습니다.
6 시그세그 잘못된 디스크 액세스.

signal() 함수

C++ 신호 처리 라이브러리에는 예측할 수 없는 이벤트를 트래핑하는 신호 기능이 포함되어 있습니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

상승() 함수

정수 신호 번호를 인수로 사용하는 raise() 함수를 사용하면 신호를 생성할 수 있습니다.

통사론

|_+_|

예시

|_+_|

산출

|_+_|

멀티스레딩은 특수한 유형의 멀티태스킹이며 컴퓨터에서 두 개 이상의 프로그램을 동시에 실행할 수 있도록 하는 기능이 멀티태스킹 기능입니다. 일반적으로 멀티태스킹에는 프로세스 기반과 스레드 기반의 두 가지 유형이 있습니다. 프로그램의 병렬 실행은 프로세스 기반 멀티태스킹에 의해 처리됩니다. 스레드 기반 멀티태스킹은 동일한 프로그램 부분의 병렬 실행을 처리합니다. 동시에 실행되는 다중 스레드 프로그램의 구성 요소는 2~3개 있습니다.

통사론

|_+_|
예 아니오 매개변수 설명
하나 화난 루틴 시작으로 전달할 수 있는 단일 명령문. 비교에 의해 void 유형의 포인터 캐스트로 전송되어야 합니다. 이동할 인수가 없을 때 NULL을 사용할 수 있습니다.
서브루틴이 반환하는 현재 스레드에 대한 불투명한 특수 식별자입니다.
속성 스레드 속성을 설정하는 데 사용할 수 있는 보이지 않는 개체 속성입니다. 스레드 속성을 사용하여 개체를 정의하거나 기본값으로 NULL을 정의할 수 있습니다.
4 start_routine 일단 설정되면 스레드가 실행되는 C++ 루틴입니다.

스레드 종료

다음 루틴을 사용하여 POSIX 스레드를 종료합니다.

|_+_|

여기서 pthread exit는 스레드를 직접 종료하는 데 사용됩니다. 일반적으로 스레드가 작업을 완료하고 더 이상 작동하지 않으면 pthread exit() 루틴의 이름이 지정됩니다.

main()이 종료하고 그것이 생성하는 스레드보다 먼저 pthread exit()로 종료되면 다른 스레드가 실행을 시작할 수 있습니다. 그렇지 않으면 main()이 종료되면 즉시 종료됩니다.

스레드 진입 및 분리

스레드를 입력하거나 제거하는 데 사용할 수 있는 두 가지 루틴을 따릅니다.

|_+_|

서브루틴 pthread join()은 'threadid' 스레드가 종료될 때까지 호출 스레드를 차단합니다. 속성 중 하나는 스레드가 형성될 때 결합 가능 또는 분리 가능 여부를 결정합니다. 조인 가능으로 생성된 스레드에 의해서만 조인될 수 있습니다. 스레드가 분리된 상태로 형성되면 절대 결합할 수 없습니다.

C++ 웹 프로그래밍

그리고 CGI는 무엇입니까?

웹 서버와 사용자 정의 스크립트 간에 정보가 공유되는 방법을 설명하는 지침 모음은 일반 게이트웨이 인터페이스 또는 CGI입니다. 외부 게이트웨이 시스템의 경우 일반 게이트웨이 인터페이스(CGI)는 HTTP 서버와 같은 정보 서버와 인터페이스하기 위한 표준입니다. CGI/1.1은 최신 버전이며 CGI/1.2는 개발 중입니다.

인터넷 검색

CGI의 개념을 이해하기 위해 특정 웹 페이지나 URL을 탐색하기 위해 하이퍼링크를 누르면 어떻게 되는지 알아보겠습니다. HTTP 웹 서버는 귀하의 브라우저에 의해 연결되고 URL, 즉 파일 이름으로 파일 이름을 요구합니다. 웹 서버는 URL을 구문 분석하고 파일 이름을 찾습니다. 요청한 파일을 찾으면 웹 서버는 파일을 브라우저로 다시 전송하고, 그렇지 않으면 잘못된 파일을 요청했다는 오류 메시지를 보냅니다.

인기 있는 게이트웨이 인터페이스(CGI)는 응용 프로그램이 웹 서버 및 클라이언트와 통신할 수 있도록 하는 기본 프로토콜입니다. Python, PERL, Shell, C 또는 C++ 등으로 이러한 CGI 프로그램을 작성할 수 있습니다.

예시

|_+_|

웹서버 구성

CGI 프로그래밍을 계속하기 전에 웹 서버가 CGI를 허용하고 CGI 프로그램을 수용하도록 설계되었는지 확인하십시오. HTTP 서버가 실행하는 많은 CGI 프로그램은 미리 구성된 디렉토리에 있습니다. 이 디렉토리를 CGI 디렉토리라고 하며 규칙에 따라 /var/www/cgi-bin으로 명명됩니다. CGI 파일은 C++로 실행 가능하지만 관례에 따라 확장자가 .cgi입니다.

HTTP 헤더

    쿠키 설정: 문자열

문자열을 통과하는 쿠키를 구성합니다.

    최종 수정 날짜: 날짜

리소스의 마지막 업데이트 날짜입니다.

    콘텐츠 길이: N

반환된 데이터의 길이(바이트)입니다. 파일의 대략적인 로드 시간을 보고하기 위해 브라우저는 이 값을 사용합니다.

    컨텐츠 타입:

문자열의 형식을 지정하는 MIME 문자열

    위치: URL

요청된 URL이 아니라 반환되어야 하는 URL입니다. 이 파일은 요청을 다른 파일로 리디렉션하는 데 사용됩니다.

    만료: 날짜

데이터가 쓸모없게 된 날. 브라우저는 이를 사용하여 웹사이트를 새로 고쳐야 하는지 여부를 결정해야 합니다.

환경 변수

    컨텐츠 타입: 클라이언트가 첨부된 컨텐츠를 서버로 보낼 때 사용하는 컨텐츠 데이터의 종류. 예를 들어 파일 업로드 등콘텐츠 길이: POST 요청에 대해서만 얻을 수 있는 설문 정보의 기간입니다.HTTP 쿠키: key & value pair type으로 설정된 쿠키를 반환합니다.에이전트 HTTP 사용자: request-header User-Agent 필드는 요청을 시작한 사용자 에이전트에 대한 정보를 제공합니다. 인터넷상의 브라우저 이름입니다.경로 정보: CGI 스크립트 파일의 방향.쿼리 문자열: GET 프로세스의 요청과 함께 제출되는 URL 인코딩 정보입니다.원격 주소: 항소를 허용하는 원격 호스트의 IP 주소입니다. 이는 로깅 또는 인증 목적에 유용할 수 있습니다.원격 호스트: 찾는 호스트의 완전한 이름입니다. 이 정보를 사용할 수 없는 경우 REMOTE ADDR을 사용하여 IR 주소를 얻을 수 있습니다.요청 방법: 제출물을 생성하는 데 사용된 방법론입니다. GET 및 POST는 가장 널리 사용되는 접근 방식입니다.스크립트 파일 이름: CGI 스크립트로 가는 완전한 길서버 이름: 서버의 도메인 이름 또는 IP 주소입니다.서버_소프트웨어: 서버에서 실행 중인 프로그램 이름 및 버전입니다.

GET 및 POST 메서드

브라우저에서 웹 서버로, 그리고 결국에는 CGI 응용 프로그램으로 세부 정보를 전송하려고 할 때 특정 시나리오에 직면해야 합니다. 두 가지 접근 방식이 브라우저에서 이 정보를 웹 서버로 전송하는 데 가장 일반적으로 사용됩니다. 이러한 접근 방식은 GET 방식과 POST 방식입니다.

URL 예 GET 메소드

|_+_|

쿠키 사용

HTTP 프로토콜은 상태 비저장 프로토콜입니다. 그러나 상업용 웹 사이트는 다양한 사이트 간에 세션 데이터를 유지하는 것이 중요합니다. 예를 들어 하나의 사용자 등록은 여러 페이지가 완료된 후에 종료됩니다. 그러나 모든 웹 사이트에서 사용자에 대한 세션 세부 정보를 보유하는 방법. 방문자 경험이나 사이트 통계 개선에 필요한 관심, 판매, 수수료 및 기타 세부 정보를 기억하고 모니터링하는 가장 안정적인 방법은 특정 경우에 쿠키를 사용하는 것입니다.

쿠키의 형태로 귀하의 서버는 방문자의 창에 일부 데이터를 전송합니다. 쿠키는 브라우저에서 승인됩니다. 그렇다면 방문자의 하드 드라이브에 일반 텍스트 아카이브로 저장됩니다. 이제 사용자가 웹의 다른 페이지를 방문할 때 쿠키를 복구할 준비가 되었습니다. 복구되면 저장된 내용이 서버에서 알려지거나 기억됩니다.

    만료- 쿠키의 만료일을 의미합니다. 비어 있으면 방문자가 브라우저를 종료할 때 쿠키가 만료됩니다.도메인− 사이트의 도메인 이름을 표시합니다.길− 쿠키를 설정하는 디렉토리 또는 웹페이지의 경로를 나타냅니다. 일부 디렉토리나 탭에서 쿠키를 얻으려고 하면 null이 될 수 있습니다.안전한− 이 필드에 secure라는 단어가 포함되어 있으면 보안 서버만 쿠키를 복구할 수 있습니다. 이 필드가 비어 있으면 다른 제한 사항이 적용되지 않습니다.이름 = 값− 키와 값 쌍의 형태로 쿠키가 설정되고 검색됩니다.

예제 파일 업로드

|_+_|

결론

이것으로 우리는 이 C++ 튜토리얼을 마칩니다. 이것이 C++ 프로그래밍에 대한 기본 사항을 이해하는 데 도움이 되었기를 바랍니다.