C++

C++ 첫 걸음

Barbarian developer 2024. 9. 24.

C와 C++

C 장/단점

장점 : 컴퓨터 처리구조와 유사해 실행속도 빠름, 효율성 높고 간결, 문법 간결, 로우레벨 프로그래밍에 사용(하드웨어 직접 제어 프로그래밍 가능), 이식성 좋음

단점 : 유지 보수 어렵고 디버깅 어려움

 

C++ 장/단점

장점 : 코드의 재활용성이 높음, 객체지향 프로그래밍(캡슐화, 상속성, 다형성), 오류 수정 쉬움, 이식성 좋고 유연

단점 : 절차지향언어보다 속도 느림

 

C / C++

C는 절차지향 프로그래밍 언어이고 c++은 객체 지향 프로그래밍 언어입니다. 절차지향은 프로그래밍을 순차적은 처리하고 객체지향은 객체 중심으로 데이터와 메소드를 만들어 엮어 처리합니다. 객체 지향은 캡슐화, 추상화, 상속, 다형성같은 특징을 가지며 구조화 되어있습니다.

 

 

(2개의 사진 출처 : https://m.blog.naver.com/PostView.nhn?blogId=itbank_guys&logNo=220096586195&proxyReferer=https%3A%2F%2Fwww.google.com%2F)

 

C++의 기초 입/출력

c++출력문

#include <iostream>     //선행처리 지시자

using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

 

  • c++의 기본 출력문입니다.
  • c++에서는 입출력 헤더파일이 iostream입니다.
  • using namespace std;를 선언 한 후, cout와 << 연산자를 이용하여 출력합니다. 
  • 이때, using namespace std;를 main위에 전역변수로 선언한다면, 함수를 만들 때도 굳이 여러번 선언해줄 필요가 없습니다.
  • 'endl;'은 '\n'과 같은 역할을 합니다.
  • c++에서도 \n은 c언어에서와 같은 역할을 수행하므로, 사용해도 크게 문제 될것은 없어 보입니다. 

 

#include <iostream>

    using namespace std;

int main()
{
    int carrots;

    carrots = 25;
    cout << "나는 당근을 ";
    cout << carrots;
    cout << " 개 가지고 있다.";
    cout << endl;
    carrots = carrots - 1; 
    cout << "아삭아삭, 이제 당근은 " << carrots << " 개이다." << endl;
    // cin.get();
    return 0;
}
  • 일반적으로 c++에서는 변수를 처음 사용 하는 곳 바로 앞에서 선언한다고 합니다. 
  • cout 함수는 prirntf() 함수처럼 %d나 %s 같은 사용할 필요가 없어서 더욱 편리합니다.

c++의 입력문

#include <iostream>

int main()
{
    using namespace std;

    int carrots;

    cout << "당근을 몇개나 가지고 있니?" << endl;
    cin >> carrots;                // C++ 입력
    cout << "여기 두개 더 있어. ";
    carrots = carrots + 2;
    // 다음 라인은 출력을 연결한다.
    cout << "이제 당근은 모두 " << carrots << " 개이다." << endl;

    return 0;
}

<출력문>

당근을 몇개나 가지고 있니?
12
여기 두개 더 있어. 이제 당근은 모두 14 개이다.

 

  • cin >> carrots;은 사용자가 입력한 정수를 carrots 변수에 저장합니다. >> 연산자는 "추출 연산자"라고 불리며, 입력 스트림에서 값을 추출하여 변수에 저장하는 역할을 합니다.
  • cin을 연속해서 사용할 수 있으며, 여러 변수에 대해 한 번에 입력받을 수 있습니다.
  • cin은 변수가 선언된 타입에 맞춰 입력을 자동으로 해당 타입으로 변환합니다.
  • cin은 입력 값이 공백, 탭, 개행문자로 구분된다고 간주합니다. 즉, 공백이나 개행이 나타나기 전까지의 값을 변수에 저장합니다.
  • 기본적으로 문자열 입력 시 공백을 기준으로 입력이 잘립니다.
  • 입력에 대한 오류 처리가 부족할 수 있습니다. 예를 들어, 사용자가 숫자를 입력해야 하는데 문자를 입력하면 오류가 발생할 수 있습니다
  • qt프로그램에서 cin을 사용해봤는데, 입력을 받지 못하고, 변수가 쓰레기 값을 출력 해 냈습니다.
  • qt에서는 입력하는 QLineEdit를 사용해야 한다고 합니다. 일단은 입력을 받는 예제에서는 vs code를 사용하였습니다.

char형과 int형의 비교

#include <iostream>

using namespace std;

int main()

{
    char ch = 'M';       // M에 해당하는 ASCII 코드를 char형 변수 ch에 대입
    int i = ch;          // 같은 코드를 int형 변수 i에 저장
    cout << ch << "의 ASCII 코드는" << i << "입니다" <<endl;

    cout << "이 문자코드에 1을 더해보겠습니다." << endl;
    ch = ch + 1;          // ch에 있는 문자 코드를 변경한다.
    i = ch;               // i에 있는 새로운 문자 코드를 저장한다.
    cout << ch << "의 ASCII 코드는" <<  i << "입니다." << endl;

    // cout.put() 멤버함수를 사용하여 char형 변수 ch를 출력한다.
    cout << "cout.put(ch)를 사용하여 char형 변수 ch를 화면에 출력: ";
    cout.put(ch);

    // cout.put()을 사용하여 문자 상수를 출력한다.
    cout.put('!');

    cout << endl << "종료" << endl;
    return 0;
}

<출력문>

 *  Executing task:  

M의 ASCII 코드는77입니다
이 문자코드에 1을 더해보겠습니다.
N의 ASCII 코드는78입니다.
cout.put(ch)를 사용하여 char형 변수 ch를 화면에 출력: N!
종료
 *  Terminal will be reused by tasks, press any key to close it.
  • cout.put은 C++에서 출력 스트림인 std::cout에 특정 문자를 출력하는 데 사용되는 함수입니다. 이 함수는 주로 단일 문자를 출력할 때 사용됩니다.
  • 예전에는 cout 객체가 문자 상수를 int형으로 저장했기 때문에 cout.put을 사용했지만, 현재의 cout는 이 문제를 해결 했다고 합니다. 

C++에서의 변수 초기화

  • 단일 변수 값을 초기화 하는데 {}를 사용할 수 있다.
int hamburgers = { 24 };	// hamburgers를 24 로 초기화
  • =를 함께 사용할수도 있고, 사용하지 않을수도 있다.
int emus{ 7 };		// emus를 5 로 초기화
int rheas = { 12 };		// rheas를 12로 초기화
  • 다음과 같이 중괄호 안에 공백을사용히여 초기화할수도 있다
int roes = { };		//roes를 0 으로 초기화
int psychics{ };	// psychics를 0 으로 초기화

wchar_t

#include <iostream>
#include <cwchar> // wchar_t 관련 함수 사용을 위해 필요

int main() {
    wchar_t wideChar = L'가'; // '가'는 한글 문자
    std::wcout << L"넓은 문자 출력: " << wideChar << std::endl;

    return 0;
}

 

  • wchar_t는 C++에서 넓은 문자(wide character)를 표현하기 위한 데이터 타입입니다.
  • 이 타입은 주로 유니코드 문자나 다국어 텍스트를 다룰 때 사용됩니다.
  • 일반적으로 char는 1바이트 크기로 ASCII 문자(영문자 등)를 표현하는 반면, wchar_t는 2바이트 이상(플랫폼에 따라 다름)으로 더 많은 문자를 표현할 수 있습니다.

auto 선언

C++에서 auto 키워드는 변수의 타입을 컴파일러가 자동으로 추론하도록 할 때 사용됩니다. C++11부터 도입되었으며, 주로 코드의 가독성을 높이고, 복잡한 타입 선언을 줄이는 데 유용합니다.

#include <iostream>
#include <vector>

int main() {
    // auto를 사용하여 변수 선언
    auto x = 10; // int로 추론됨
    auto y = 3.14; // double로 추론됨
    auto z = "Hello, World!"; // const char*로 추론됨

    // 복잡한 타입을 추론할 때 유용함
    std::vector<int> vec = {1, 2, 3, 4, 5};
    auto it = vec.begin(); // std::vector<int>::iterator로 추론됨

    std::cout << "x: " << x << "\n";
    std::cout << "y: " << y << "\n";
    std::cout << "z: " << z << "\n";

    return 0;
}

 

  • auto는 항상 변수의 초기화와 함께 사용해야 합니다.
  • 복잡한 타입일 경우, 명시적으로 타입을 알기 어렵기 때문에 오히려 혼란을 줄 수 있으므로 신중하게 사용해야 합니다.

'C++' 카테고리의 다른 글

' : '과 ' :: '의 차이점  (0) 2024.09.26
c++클래스(2)  (0) 2024.09.25
c++ 참조  (0) 2024.09.25
c++ 클래스  (3) 2024.09.25
vector와 array  (0) 2024.09.25

댓글