Chapter.1 C 와는 다른 C++
- C와 C++의 차이
- C언어의 자료형에 대한 핵심
- 정수형이나 문자형 같은 자료형: 자료형이 다르면 사용 불가능
- 구조체나 공용체: 기존의 자료형을 조합해 새로운 형식의 자료형을 만들어 활용할 수 있다
- 포인터: 자료형을 효율적으로 다루기 위해 메모리를 어떻게 이용하는지 이해하기 위한 핵심 개념
- HellowWord로 본 C++
- #include "stdafx.h" // standard application frameworks (표준 애플리케이션 프레임 워크) -> visual studio만 사용
- #include <iostream> // C++ 에서는 표준 헤더파일을 추가할 때 .h 를 붙이지 않는다
- std::cout << "Hellow World" << std::endl;
- std = 네임스페이스(namespace) 개념 상 소속!
- :: = 범위 지정 연산자, 스코프 설정 연산자(Scope resolution operator)
- cout = 콘솔 출력을 담상하는 객체
- << = 연산자 함수
- endl = C 언어의 \n 과 같이 개행의 역활 + Fflush와 같이 출력 스트림를 모두 내보내는 역활
- C언어의 printf 함수보다 효율적 / 출력 전문 객체에게 출력을 맡기는 것 ex) 세탁 직접하기 -> 세탁소에 맡기기
- 인스턴스와 입출력 흐름
- 인스턴스(instance) 란? = 객체의 형식을 갖는 변수를 인스턴스 라 한다
- std::cout
- iostream 클래스의 인스턴스 이다
- C와 가장 큰 차이점은 형식문자를 지정하지 않아도 된다는 것이다!
- << 연산자로 여러 문자열을 추가로 이어 출력할 수 있다
- ex) std::cout << "저는 " << 20 << "살 " << "입니다."" << std::endl; // 저는 20살 입니다.
- std::cin
- iostream 클래스의 인스턴스 이다
- >> 연산자를 사용, 마찬가지로 형식문자를 지정하지 않아도 된다
- ex) std::cin >> nAge; // 입력받은 문자, 문자열 등을 nAge 에 저장
- 자료형
- 변수의 선언 및 정의
- int a = 10; = int a(10); // 초깃값이 상수가 아닌 변수 일 경우(int b(a)) 복사 생성자 사용됨
- auto
- 초깃값의 형식에 맞춰 선언하는 인스턴스의 형식이 '자동'으로 결정됨
- 변수의 선언 및 정의
- 메모리 동적 할당
- new와 delete 연산자
- new 연산자 = 객체의 생성자 호출, delet 연산자 = 객체의 소멸자 호출
- 일반 변수
- 형식 *변수이름 = new 형식;
- delete 변수이름
- 배열인 변수
- 형식 *변수이름 = new 형식[요소개수];
- delete[] 변수이름;
- new와 delete 연산자
- 참조자 형식
- 형식 &이름 = 원본; // 꼭 선언과 동시에 초기화 해야함 ( 상수에는 참조자 선언 불가 )
- 포인터와 다르게 한번 짝을 이루게 되면 달라지지 않는다
- 덩치가 큰 자료는 값이 아니라 '주소'를 전달하는 것이 효율적이기 때문에 존재한다, call-by-reference 가능
- 호출자 코드로는 매개변수가 참조 형식인지 알 수 없다!
- r-value 참조
- int &&radata = 3;
- r-value 참조자는 곧 사라질 대상에게 참조가 가능하다 ex) 3+2+1 이면 3+2가 먼저 계산된 후 5+1이 계산됨, 이때 5가 곧 사라질 대상
- 추후 더 설명할 예정
- 범위기반 for 문
- for(auto 요소변수 : 배열이름) { 반복문 }
- 배열의 요소 수에 따라 반복 횟수가 정해지고, 요소 변수는 각 배열의 n번째 요소에 접근하게 해준다
- ex) int arr[5]; for(auto n : arr) // 5번 반복, 0번째는 n = arr[0], 2번째때 n=arr[2]; 이다
- 배열의 요소를 변경하려면 &요소변수 형식으로 선언해야 한다
- ex) for(auto &n : arr)
- 배열이 바뀌었을 경우 반복문을 수정하지 않아도 되기 때문에 생산성이 향상된다
- 배열의 요소 수에 따라 반복 횟수가 정해지고, 요소 변수는 각 배열의 n번째 요소에 접근하게 해준다
- for(auto 요소변수 : 배열이름) { 반복문 }
- C언어의 자료형에 대한 핵심
연습문제
1.
string name;
int age;
cin >> name >> age;
cout << "나의 이름은 " << name << "이고, " << age << "살입니다." << endl;
2. auto 는 초깃값의 형식에 따라 자료형을 세팅해준다, ex) auto a(10); // = int a(10);
3. char *arr = new char[12]; / delete[] arr;
4. void swap(int &a, int &b) { int tmp; tmp = a; a = b; b = a; }
5. 기본 참조는 저장되어 있는 변수의 위치를 참조하는 것 이고, 상수형 참조는 곳 사라질 값, 즉 중간 계산 값(임시 결과)를 참조할 수 있다.
-- ??
6. for(auto n : aList) { cout << n << " ";} cout << endl;
'IT공부 > 이것이 C++이다' 카테고리의 다른 글
객체의 관계 규정과 설계_1 (0) | 2022.03.16 |
---|---|
객체지향 프로그래밍_2 (0) | 2022.03.12 |
객체지향 프로그래밍_1 (0) | 2022.03.11 |
C에서 C++ 문법 전환하기_2 (0) | 2022.03.09 |