C++ 란 무엇입니까

C++ 라는 단어는 중국 본토의 프로그래머들 사이에서는 보통' C plus' 로 읽혀지고, 서구 프로그래머들은 보통' C plus plus' 와' CPP' 로 읽혀진다. 널리 사용되는 컴퓨터 프로그래밍 언어입니다. C++ 는 정적 데이터 유형을 확인하고 다양한 프로그래밍 패러다임을 지원하는 범용 프로그래밍 언어입니다. 절차 프로그래밍, 데이터 추상화, 객체 지향 프로그래밍, 일반 프로그래밍 등의 다양한 프로그래밍 스타일을 지원합니다.

C 를 기반으로 벨 연구소의 Bjarne Strou-strup 은 1983 년 C++ 를 출시했습니다. C++ 는 C 언어를 더욱 확장하고 개선하여 객체 지향 프로그래밍 언어가 되었습니다. 최신 C++ 컴파일러는 Borland C++4.5, Symantec c c++6.1및 Microsoft VisualC++ 20 12 입니다. C++ 는 몇 가지 더 깊은 개념을 제시합니다. C++ 가 지원하는 이러한 객체 지향 개념은 문제 공간을 프로그램 공간에 직접 매핑하기 쉬우므로 프로그래머는 기존의 구조화 프로그래밍과는 다른 사고방식과 프로그래밍 방법을 제공합니다. 그래서 전체 언어의 복잡성을 증가시켜 파악하기가 어렵다.

미국 AT& 의 c++;+; T Bell Laboratories 의 Benjani Strastrup 박사는 1980 년대 초에 이 언어를 발명하고 실현했다 (원래 이 언어는 C 를' 클래스 C' 라고 불렀다). 처음에 C++ 는 C 언어의 향상된 버전으로 나타났다. C 언어가 클래스를 추가한 이후로 새로운 기능이 계속 증가했다. 가상 함수, 연산자 오버로드, 다중 상속, 템플릿, 예외, RTTI 및 네임스페이스 [1] 가 점차 표준에 추가됩니다. [2]

1998 국제 표준화기구 (ISO) 는 C++ 프로그래밍 언어의 국제 표준인 ISO/IEC 1988- 1998 을 공포했다. C++ 는 일반적으로 ANSI/ISOC++ 라고 하는 국제 표준을 갖춘 프로그래밍 언어입니다. [4]

1998 은 C++ 표준위원회 설립 첫해이며, 표준은 필요에 따라 5 년마다 업데이트됩니다. C++0x 의 최종 국제투표는 20 1 1 년 8 월에 끝났고 각국은 모두 찬성표를 던졌다. C++0x 는 의심 할 여지없이 공식 국제 표준이되었습니다. 임시로 C++0x 로 명명된 새 표준의 이름은 C++ 20 1 1 으로 지정됩니다. C++ 20 1 1 은 1998 년에 발표된 기존 C++ 표준 ISO/IEC 14882 를 대체합니다 국제표준화기구는 9 월 1 일 ISO/IEC14882: 2011을 발표했습니다. 이름: 정보기술;

컴퓨터 초기에 사람들은 컴퓨터 언어나 어셈블리 언어로 프로그램을 작성해야 컴퓨터를 사용할 수 있을까? 세계 최초의 고급 컴퓨터 언어는 1954 에서 탄생했습니다. 포트란? 많은 고급 컴퓨터 언어가 차례로 등장합니까? 어느 것이 가장 널리 사용됩니까? 가장 큰 영향을 미치는 언어는 무엇입니까, 기본, c?

기본 언어는/BASIC-0/964 의 포트란 언어를 기반으로 단순화됩니다. 초보자를 위해 설계된 작은 고급 언어입니다.

C 언어는 벨 연구소의 D.M.Ritchie 가 1972 년에 성공적으로 개발했습니까? 초보자를 위한 것이 아니라 컴퓨터 전문가를 위한 디자인인가요? 대부분의 시스템 소프트웨어와 많은 앱이 C 언어로 쓰여져 있나요?

하지만 소프트웨어 규모가 커지면서 C 언어로 프로그램을 쓰는 것이 좀 어려울 것 같아요?

C++ 는 at& 로 구성됩니다. 벨 연구소의 비아니 스트라우스트루프 박사와 그의 동료들은 80 년대 초 C 언어를 기초로 이 언어를 성공적으로 개발했습니까? C++ 는 C 언어의 모든 장점을 보존하고 객체 지향 메커니즘을 추가합니까?

C++ c 에서 개발, c 호환? C 언어로 작성된 프로그램은 기본적으로 수정 없이 C++ 를 사용할 수 있습니다. C++ 의 이름에서 알 수 있듯이 C 의 초월과 농축인가? C++ 는 프로세스 지향 및 객체 지향 프로그래밍에 모두 사용할 수 있습니다. 강력한 혼합 프로그래밍 언어입니까?

C++ 는 6 가지 측면에서 c:

(1) 유형 검사가 더 엄격합니다.

(2) 객체 지향 메커니즘이 추가되었습니다.

(3) 제네릭 프로그래밍 (템플릿) 메커니즘이 추가되었습니다.

(4) 예외 처리 추가

(5) 연산자 오버로드를 추가했습니다.

(6) 표준 템플릿 라이브러리 (STL) 가 추가되었습니다.

객체 지향 프로그래밍은 소프트웨어 개발의 효율성을 높이기 위해 대형 프로그램 개발을 위해 고안된 것입니까? 객체 지향 및 프로세스 지향에 반대하지 마십시오. 객체 지향과 프로세스 지향은 모순이 아니라 각각 쓸모가 있는가? 보완?

C++ 를 배우려면 C++ 를 사용하여 프로세스 지향 구조화 프로그래밍뿐만 아니라 C++ 를 사용하여 객체 지향 프로그래밍뿐만 아니라 템플릿을 사용하여 일반 프로그래밍도 해야 합니까?

C 와 C++ 의 관계

그러나 C 는 C++ 의 기초이며 C++ 언어와 C 언어는 여러 방면에서 호환된다. 따라서 C 언어를 익히고 C++ 를 더 배우면 익숙한 문법으로 객체 지향 언어를 배울 수 있어 적은 노력으로 더 많은 일을 할 수 있습니다.

C 스케줄

1978 천 파운드 중화인민공화국->1988 ansi c->; 1995 ISO C

C 언어를 배우는 가장 고전적인 방법은 c 프로그래밍 언어입니다.

역사를 발전시키다

C++ 언어 개발은 세 단계로 나눌 수 있습니다.

1 단계의

80 년대부터 1995 까지. 이 단계에서 C++ 언어는 기본적으로 기존의 객체 지향 언어로 C 언어의 효율성에 근접해 업계에서 사용하는 개발 언어에서 상당한 점유율을 차지하고 있습니다.

2 단계

1995 에서 2000 년까지 표준 템플릿 라이브러리 (STL) 와 이후 Boost 라이브러리의 출현으로 인해 일반 프로그래밍이 C++ 에서 점점 더 큰 비중을 차지하고 있습니다. 물론, 이와 동시에 Java, C# 등의 언어의 출현과 하드웨어 가격의 대규모 하락으로 C++ 는 어느 정도 충격을 받았습니다.

3 단계

2000 년 이후 Loki, MPL 등의 라이브러리로 대표되는 생산식 프로그래밍과 템플릿 메타프로그래밍의 출현으로 C++ 는 발전사에서 또 다른 새로운 정점에 이르렀다. 이러한 신기술의 출현과 기존 기술과의 융합으로 C++ 는 메인스트림 프로그래밍 언어에서 가장 복잡한 멤버가 되었습니다. [7]

우세

C++ 코드

C++ 는 정적 유형의 다용도 프로그래밍 언어로 설계되어 C 만큼 효율적이고 이식이 가능합니다.

C++ 는 다양한 프로그래밍 스타일 (프로그래밍, 데이터 추상화, 객체 지향 프로그래밍, 일반 프로그래밍) 을 직접적이고 광범위하게 지원하도록 설계되었습니다.

C++ 는 프로그래머의 잘못된 선택을 초래할 수 있더라도 프로그래머에게 더 많은 선택을 하도록 설계되었습니다.

C++ 는 C 와 최대한 호환되도록 설계되어 C 에서 C++ 로의 부드러운 전환을 제공합니다.

C++ 는 플랫폼 제한 또는 일반적이지 않은 기능을 피합니다.

C++ 는 추가 오버헤드를 발생시키는 기능을 사용하지 않습니다.

C++ 디자인은 복잡한 프로그래밍 환경이 없습니다. [8]

언어를 간결하고 효율적으로 운영하기 위해 C++ 의 많은 기능은 라이브러리 (예: STL) 또는 다른 형태로 제공되며 언어 자체에 직접 추가되지 않습니다. 비야니 스트라우스트루프의' C++ 언어의 디자인과 진화' (1994) 는 이 주제에 대해 자세한 진술을 했다.

C++ 는 C 언어와 어느 정도 잘 결합될 수 있으며, 대부분의 C 언어 프로그램도 C++ 의 통합 개발 환경에서 수행됩니다. C++ 는 많은 객체 지향 언어에 비해 상당히 높은 성능을 제공합니다.

C++ 는 인간-컴퓨터 상호 작용 응용 프로그램을 보다 쉽고 빠르게 개발할 수 있도록 객체 지향 개념을 도입했습니다. MFC, QT, wxWidgets 를 포함한 많은 우수한 프로그램 프레임워크는 C++ 를 사용합니다. [9]

코드 성능

일반적으로 Java 또는 C# 을 사용하는 개발 비용은 C++ 보다 낮은 것으로 간주됩니다. 그러나 C++ 와 이 언어들의 차이점을 충분히 분석해 보면 이 말이 조건부라는 것을 알 수 있다. 이 조건은 소프트웨어 규모와 복잡성이 상대적으로 작다는 것이다. 30,000 줄의 유효한 코드 (생성기에서 생성된 코드 제외) 를 초과하지 않는 경우 이 문장은 기본적으로 성립될 수 있습니다. 그렇지 않으면 코드의 양과 복잡성이 증가함에 따라 C++ 의 장점이 더욱 두드러집니다. 이러한 차이를 초래한 것은 C++ 의 소프트웨어 엔지니어링이다. [9]

열세

C++ 언어 자체가 너무 복잡해서 인간이 그 의미를 이해하기가 어렵다. 설상가상으로 C++ 의 복잡성 때문에 C++ 의 컴파일 시스템은 쓰기가 매우 어렵습니다. 사용할 수 있는 컴파일러에도 많은 문제가 있어 대부분 발견하기 어렵다. [9]

복잡성으로 인해 복잡한 C++ 프로그램의 정확성을 보장하기가 어렵습니다. 멀티스레드 원어를 지원하지 않는 것과 같은 결함도 제기되었다. 하지만 그렇게 많은 유명인들이 그렇게 많은 결함을 제기했는데, 이는 C++ 가 널리 사용되고 성공적이라는 것을 보여준다.

C++ 언어는 지나치게 복잡하고 유닉스 문화와의 충돌로 유닉스/리눅스 분야의 많은 유명 인사들 (예: 리눅스의 아버지 Linux Torvalds, 유명 해커 UNIX S. Raymond) 로부터 강한 비판과 저항을 받았다.

C++ 기본 데이터 유형 및 표현식

데이터는 프로그램이 처리하는 객체이며 자신의 특성에 따라 분류할 수 있습니다. 우리는 수학적으로 정수와 실수라는 개념이 있다는 것을 알고 있으며, 일상생활에서는 사람의 이름과 주소를 문자열로 표현해야 한다. 일부 질문에 대한 답은 "예" 또는 "아니오" (즉, 논리적으로 "참" 또는 "거짓") 일 수 있습니다. 데이터 유형에 따라 처리 방법이 다릅니다. 예를 들어 정수와 실수 모두 산술 연산에 참여할 수 있지만 실수의 표현은 정수와 다르므로 특정 소수 자릿수를 유지해야 합니다. 문자열을 접합할 수 있습니다. 논리 데이터는 AND, OR 및 NOT 과 같은 논리 연산에 참여할 수 있습니다.

컴퓨터 프로그램을 쓰는 목적은 객관적인 세계의 실제 문제를 해결하기 위해서이다. 따라서 고급 언어도 풍부한 데이터 유형과 작업을 제공합니다. C++ 의 데이터 유형은 기본 유형과 사용자 정의 유형으로 구분됩니다. 기본 유형은 C++ 컴파일러 시스템에 내장되어 있습니다.

기본 데이터 유형

C++ 의 기본 데이터 유형은 다음 표와 같습니다 (표의 각 유형의 길이와 범위는 VC++ 2008 및 IA-32 프로세서의 gcc 4.2 를 기준으로 함).

유형 이름 길이의 범위 (바이트) 입니다

Bool 1 거짓, 참

1-128~ 127

부호 있는 문자 1-128~ 127

부호 없는 문자 1 0~255

짧음 (부호가 짧음) 2 -32768~32767

부호 없는 짧은 정수 2 0~65535

Int (부호 있는 int) 4-2147483648 ~ 2147483647

부호 없는 정수 4 0~4294967295

용 (서명장) 4-2147483648 ~ 2147483647

부호 없는 정수 4 0~4294967295

부동 4 3.4x10 (-38) ~ 3.4x10 (38)

이중 81.7x10 (-308) ~1.7x10 (308)

긴 이중 81.7x10 (-308) ~1.7x10 (308

이 단락 프로그래밍 기술 편집

신규 및 삭제

연산자 new 와 delete 는 storage 의 동적 메모리 할당 및 해제 기능을 제공합니다. c 언어의 malloc () 및 free () 함수에 해당하지만 성능이 더 좋습니다. New 를 사용하면 malloc () 에 비해 다음과 같은 장점이 있습니다.

(1)new 는 sizeof 연산자 대신 할당할 유형의 크기를 자동으로 계산하므로 더 편리하고 오류를 피할 수 있습니다.

(2) 포인터 유형 변환을 강제할 필요 없이 올바른 포인터 유형을 자동으로 반환합니다.

(3) 새로 할당 된 객체를 초기화 할 수 있습니다. [1 1]

직선에

자주 사용하는 함수의 경우 C 언어는 함수 호출 대신 매크로 호출을 사용하여 코드 실행 속도를 높이고 호출 오버헤드를 줄이는 것이 좋습니다. 그러나 매크로 호출에는 많은 단점이 있어 예상치 못한 부작용이 발생할 수 있습니다. 예를 들어 매크로: # defineabs (a) (a) < 0? (-a):(a) abs(i++) 를 사용할 때 이 매크로에 오류가 발생합니다.

따라서 C++ 에서 매크로 호출 대신 inline 함수를 사용해야 매크로 호출의 목적을 달성하고 매크로 호출의 폐단을 피할 수 있습니다.

인라인 함수를 사용하려면 inline 키워드를 함수의 반환 유형 앞에 배치하기만 하면 됩니다. [1 1]

함수 오버로드

C 언어에서 두 함수의 이름은 같을 수 없습니다. 그렇지 않으면 컴파일 오류가 발생합니다. C++ 에서 두 함수의 함수 이름은 같지만 매개변수 데이터 유형이 다르거나 매개변수 수가 다르거나 둘 다 있는 경우 오버로드로 해석됩니다.

함수 오버로드를 사용하면 프로그래머가 intabs (), fabs () 및 dabs () 와 같은 복잡한 함수 이름을 사용하지 않고도 보다 복잡한 문제를 처리할 수 있습니다. 동시에 대규모 프로그램에서는 함수 이름을 관리하고 사용하기 쉬우므로 함수 이름을 처리하기 위해 머리를 쥐어짜지 않아도 됩니다. 또한 매개 변수 데이터 유형은 동일하지만 두 함수 반환 유형이 다른 함수는 다시 로드할 수 없습니다. [1 1]

매개 변수 전달

C 언어에서 함수가 매개 변수로 사용되는 변수 값을 수정해야 하는 경우 매개 변수를 포인터 유형으로 선언해야 합니다. 매개 변수의 크기가 하나 이상의 기계 단어의 길이를 초과하면 값 전달을 통해 매개 변수를 전달하는 것이 비효율적이며 포인터도 필요합니다. C 언어의 포인터는 p++, -p, p++1과 같은 산술 연산을 수행할 수 있기 때문에 컴파일러는 컴파일 시 포인터에서 참조하는 변수를 결정할 수 없습니다. 복잡한 프로그램의 경우 포인터를 사용하면 오류가 발생하기 쉽고 프로그램을 읽기가 어렵습니다. C++ 에서는 포인터 대신 참조를 사용하여 프로그램을 보다 명확하고 이해하기 쉽게 만들 수 있습니다. 참조는 변수의 별칭입니다. 참조에 대한 작업은 원래 변수에 대한 작업과 같습니다. [1 1]

기본 매개변수

C++ 에서 함수는 기본 매개 변수를 사용할 수 있습니다.

일반적으로 함수는 가능한 한 유연해야 합니다. 기본 매개 변수를 사용하면 프로그래머가 보다 복잡하고 유연한 문제를 효율적으로 처리할 수 있으므로 기본 매개 변수는 C++ 코드에서 널리 사용됩니다.

모든 기본 매개변수는 기본값이 아닌 매개변수의 오른쪽에 나타나야 합니다. 즉, 기본 매개변수를 정의한 후에는 기본값이 아닌 매개변수를 더 이상 설명할 수 없습니다. 그렇지 않으면 이러한 매개 변수 중 하나를 생략할 때 컴파일러에서 해당 매개 변수를 사용자 정의했는지 또는 기본 매개 변수를 사용하여 기본값이 아닌 매개 변수를 정의했는지 알 수 없습니다. [1 1]

STL 사용

STL (표준 템플릿 라이브러리), STL 의 코드는 대략 알고리즘, 컨테이너, 반복자의 세 가지 범주로 나뉘며, auto_ptr 과 같은 도구를 포함합니다. 거의 모든 코드는 템플릿 클래스와 템플릿 함수를 사용하므로 기존 함수 및 클래스로 구성된 라이브러리보다 코드를 재사용할 수 있는 더 좋은 기회를 제공합니다.

연산자는 오버로드되므로 배열처럼 벡터의 요소에 액세스할 수 있습니다. [1 1]

템플릿 사용

템플릿의 개념.

템플릿은 C++ 의 특성이므로 각 특정 유형에 대해 동일한 코드를 반복하지 않고도 함수와 클래스가 서로 다른 유형에서 작동할 수 있습니다. 템플릿과 달리, 우리는 이미 오버로드를 이해했다. 오버로드 함수의 경우 C++ 의 검사 메커니즘은 함수 인수와 클래스에 따라 다를 수 있습니다. 오버로드 함수를 올바르게 호출합니다. 예를 들어 두 숫자의 최대값을 얻으려면 max () 함수를 정의할 때 데이터 유형에 따라 오버로드된 다른 버전을 정의해야 합니다. 템플릿을 사용하는 경우 각 유형에 대해 동일한 논리를 반복하지 않고 하나의 일반 MAX 템플릿만 작성할 수 있습니다.

포인터와 참조의 차이점

포인터와 참조는 완전히 다르게 보이지만 (포인터는 연산자 "*" 및 "->" 를 사용하고 참조는 연산자 "&"를 사용) 동일한 기능을 가지고 있는 것 같습니다. 포인터와 참조를 사용하면 다른 객체를 간접적으로 참조할 수 있습니다. 포인터를 사용할 시기와 참조를 사용할 시기를 어떻게 결정합니까?

첫째, 어떤 상황에서도 빈 값에 대한 참조를 사용할 수 없다는 것을 깨달아야 한다. 참조는 항상 객체를 가리켜야 합니다. 따라서 변수를 사용하고 객체를 가리키지만 이 변수가 특정 시점에서 객체를 가리키지 않을 수 있는 경우 이 변수를 포인터로 선언해야 합니다. 그러면 이 변수에 null 값을 지정할 수 있기 때문입니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), Northern Exposure (미국 TV 드라마), 변수명언 반대로 변수가 객체를 명시적으로 가리키는 경우 (예: 설계에서 변수를 비워 둘 수 없는 경우) 변수를 참조로 선언할 수 있습니다. [12]

上篇: 윤리위원회의 역할 下篇: 무료 원클릭 IP 변경 소프트웨어
관련 내용