C++ Study 0001

C++언어 공부 0001

C와 C++의 차이점

  • C++은 C에서 발전한 언어로, C에 객체지향적 개념을 추가한 언어이다.
    • C는 절차지향적 언어이다.
    • 객체지향이란 실제 세계를 모델링하여 소프트웨어를 개발하는 것이다.
    • 객체지향의 요소 : virtual function, operator overloading, template, handling exception, multiple inheritance, etc

기본 헤더파일의 변경

  • C에서는 기본적인 기능을 위해 #include \<stdio.h\>를 사용하였다면, C++에서는 #include \<iostream\>을 이용한다.
  • 기본 헤더파일의 변경에 따라 자주 사용되는 키보드와 콘솔을 통한 입출력 함수 또한 변경되었다.
    • 출력 함수
      • printf(내용)대신 cout << 내용을 이용한다.
    • 입력 함수
      • scanf(변수)대신 cin >> 변수를 이용한다.

참조자(reference) 개념의 추가

  • 변수에 별명(alias)을 붙이는 것을 참조자라 한다.
  • 만약 abc라는 변수의 별명을 def락 하고싶다면, 아래와 같이 작성해야 한다.
int abc;
int &def = abc;
  • 참조자는 선언과 동시에 초기화 되어야 한다.
    • 그렇지 않으며 오류가 발생한다.
  • 포인터는 변경될 수 있지만 참조자는 변경이 불가능하다.
  • 참조자를 상수로 초기화 할 수 없다.
  • 참조자의 값을 변경하면, 참조자가 가리키는 변수의 값 또한 변경된다.
    • 참조자를 통한 값 변경을 방지하려면 const키워드를 이용하면 된다.

이름공간이라는 개념의 추가

  • 코드에 여러 라이브러리가 include되고, 만약 여러 라이브러리에서 같은 이름의 함수가 있다면 컴파일러는 어떤 라이브러리의 함수를 이용해야 하는지 모르는 상황이 발생하게 된다. 이때 namespace를 통해 사용할 함수를 정할 수 있다.
  • 라이브러리의 사용을 위해 namespace를 사용하겠다고 선언하는 경우의 사용법
#include <iostream>
using namespace std; // std라는 namespace를 사용, iostream 헤더파일에 있는 함수의 namespace임
  • 라이브러리 파일에서 namespace를 정해주는 경우의 사용법
namespace abc
{ // This doSomething() belongs to namespace abc
    int doSomething(int a)
    {
        return a;
    }
}

논리형 자료형의 추가

  • 참과 거짓을 C에서는 0(거짓)과 1(참)로 나타내었지만, C++에서는 이를 위한 자료형이 추가되었다.
  • true : 참
  • false : 거짓
  • boolean type 변수의 선언은 bool 변수명;을 이용한다.

문자열 자료형의 추가

  • C에서는 배열의 각 칸에 문자를 넣어 문자열처럼 사용하였다.
  • string라이브러리를 통해 해당 자료형이 추가되었다.
  • string type 변수의 선언과 초기화는 string 변수명 = "문자열";을 이용한다.
    • 문자 자료형의 초기화는 작은따옴표를 사용하였다.
  • 라이브러리의 주요 함수
    • strlen(s) : 문자열 s의 길이를 구한다.
    • strcpy(s1, s2) : s2를 s1에 복사한다.
    • strncpy(s1, s2, n) : s2의 최대 n개의 문자를 s1에 복사한다.
    • strcat(s1, s2) : s2를 s1의 끝에 붙여넣는다.
    • strncat(s1, s2, n) : s2의 최대 n개의 문자를 s1의 끝에 붙여넣는다.
    • strcmp(s1, s2) : s1과 s2를 비교한다.
    • strncmp(s1, s2, n) : 최대 n개의 문자까지 s1과 s2를 비교한다.
    • strchr(s, c) : 문자열 s안에서 문자 c를 찾는다.
    • strstr(s1, s2) : 문자열 s1에서 문자열 s2를 찾는다.

STL의 추가

  • STL(Standard Template Library)이란 컨테이너, 반복자, 알고리즘간의 협력에 기반한 템플릿 라이브러리다.
  • template을 이용해서 Generic한 프로그래밍이 가능하다.
    • Generic하다는 것은, 타입에 상관없이 작동한다는 것이다.
  • 이 부분은 추후 자료구조에 대한것을 공부할 때 다루기로 한다.

예약어(Keyword)의 추가

  • C의 예약어를 유지한 채, 새로운 예약어들이 추가되었다.
    • 새로운 개념 도입에 따른 추가이다.
    • asm, bool, catch, class, const_cast, delete, dynamic_cast, explicit, false, friend, inline, mutable, namespace, new, operator, private, protected, public, reinterpret_cast, static_cast, template, try, typeid, typename, using, virtual, wchar_t, this, throw, true 등이 추가되었다.

변수 선언이 가능한 위치의 추가

  • C에서는 조건문, 반복문 등에서 조건 검사를 위한 변수나 iterator 변수를 사용할 때, 반복문 이전에 미리 선언을 한 뒤, 반복문에서 이를 이용하여야 하였다.
  • 그러나 C++에서는 아래 예시와 같이 반복문 조건검사 부분 안에서 선언이 가능하다.
if(bool isTrue = get_stats())
{
    내용
}

for(int i = 0; i < 10; i++)
{
    내용
}

Reference

0%