Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

C++프로그래밍 9주차 중간고사 정리 본문

1-2/C++프로그래밍

C++프로그래밍 9주차 중간고사 정리

김브래 2022. 10. 27. 20:05

C++ 중간고사 정리

202114013 김동현

논리 연산자 - &&, ||, !

 

문자형 변수는 작은 따옴표를 붙인다.

문자열 변수는 큰 따옴표를 붙이고 널문자가 뒤에 자동으로 붙는다.

 

입출력 스트림 객체 cout, cin - #include <iostream>

std::을 써야하지만 using namespace std;를 써도 된다.

아니면 using std::cout; / using std::cin; 등등 이렇게 하나하나 써주어도 된다.

cout << : printf()와 같은 출력에 사용 / cin >>: scanf와 같이 입력에 사용

 

C++에서는 문자열 자료형 String을 사용할 수 있다.

String C언어의 const char*와 같다.

String도 사용하려면 using std::string;을 쓰거나 using namespace std;을 쓰면 된다.

 

함수 정의는 함수 원형, prototype 이라고도 한다.

 

매개변수를 전달하는 방법 값에 의한 호출, 주소에 의한 호출

- call by value: 실매개변수의 값을 형식매개변수로 전달

- call by reference: 실매개변수의 주소를 형식매개변수로 전달

 

주소연산자 & - 변수의 주소를 알고 싶으면 변수 앞에 &를 붙인다.

 

C++3년마다 표준이 나온다.

 

지역(local)변수와 전역(global)변수

- 지역변수: 함수 안에 선언, 함수 블록 내부에서만 접근 가능

- 전역변수: 함수 밖에서 선언, 어디든 접근 가능

 

기억 클래스: 자동(auto)

 

- 가장 많이 사용

- 함수나 블록 내부에서 선언

- 생략 가능

- 스택(stack)공간을 일시적으로 사용

- 함수나 블록을 진입하면 기억 영역이 확보되고, 벗어나면 기억 영역은 바로 소거

, return문으로 리턴된 값은 스택에 복사되어 외부로 전달

초기화는 실행시 이루어짐, 초기화하지 않으면 쓰레기 값(garbage value)을 가짐

 

기억클래스: 정적(static)

 

자료형 앞에 static 키워드를 붙여 선언

프로그램이 종료될 때까지 값을 유지

처음 실행시 한번만 초기화 되고 초기값이 없으면 자동 0으로 초기화

스택이 아닌 정적 데이터 영역 사용

지역 static변수는 해당 블록 내에서만 접근 가능

전역변수는 기본적으로 static변수 이므로 키워드 필요 없음

 

C++11부터 auto는 기억 클래스 지정자가 아닌 동적으로 타입을 정할 수 있게 변경되어 오류

 

C언어 구조체: 변수들의 모임

C++ 클래스: 변수와 함수의 모임

 

C언어 구조체: 변수들의 모임

C++ 구조체: 변수와 함수의 모임

 

C++ 구조체는 접근제어 속성을 생략하면 public이 기본이지만, 클래스는 private이 기본이다.

 

CC++의 구조체 차이

C에서는 구조체 변수를 선언할 때 struct 구조체명 변수 로 선언해야하지만

C++에서는 struct를 생략 할 수 있다.

 

구조체 변수가 자신의 멤버를 접근하기 위해서는 “.” 이나 “->”연산자를 사용

일반 구조체 변수의 멤버 접근: 점 연산자

구조체 포인터 변수의 멤버 접근: 화살표 연산자

 

객체: 자료와 이를 처리하는 동작인 연산(함수, method)을 하나로 묶어 만든 요소

 

객체란 자료를 표현하는 변수 만을 가지는 것이 아니라 그 객체의 함수도 구성

인스턴스: 클래스에서 생성된 객체를 인스턴스라고 한다

 

클래스는 객체의 타입이다.

 

클래스: 객체들의 공통적인 특성을 모아 놓은 것

객체: 자신이 상태와 행동,이름을 가지고 있는 것

 

객체지향 프로그램의 핵심기술: 캡슐화, 상속성, 다형성

 

상속(inheritance): 파생 클래스가 기본 클래스의 정의된 속성을 상속받는 것

 

다형성(polymorphism): 하나의 함수 이름이나 연산자를 여러 목적으로 사용

 

클래스 멤버의 접근 권한

private 전용: 해당 클래스 내부에서만 접근 가능

public 범용: 어디에서나 접근 가능

보호(protected): private 이지만 자식에게는 접근할 수 있도록 함

외부에서 접근하지 못하는 것이 캡슐화임

멤버함수의 선언과 정의

- 클래스 안에서 정의 (클래스의 몸체가 비대해질 수 있어 잘 사용하지 않는다.)

클래스 안에 선언, 클래스 밖에 정의

멤버 함수를 클래스 안에서 정의 하면 자동 인라인 함수가 됨

멤버 함수를 클래스 외부에서 정의 // 자동 인라인 함수가 아님

리턴형 클래스명::멤버함수명(매개변수){}

클래스 안에 리턴형 멤버함수명(매개변수); // 선언

 

클래스 선언

class{

private

~

public

~

}; // 세미콜론 주의

범위 지정 연산자 : “::“

멤버함수가 어느 클래스에 포함되어 있는지를 나타낼 때

함수 안에서 전역변수를 접근할 때

 

namespace: 모든 식별자가 유일하도록 보장하는 코드 영역을 정의

std namespace: cin, coutC++표준 라이브러리의 네임스페이스

using 지시문 using namespace std; // std 네임스페이스의 모든 것을 사용하겠다.

 

inline 함수: 함수 선언 앞에 inline 키워드를 사용하여 정의, 컴파일러에 의해 처리되며 텍스트가 아닌

함수 코드 블록의 복사본인 기계어 코드가 직접 삽입된다.

 

inline 함수의 단점

사용하면 프로그램의 전반적인 실행속도가 빨라지지만 코드가 작은 함수일 때와 호출 빈도가 낮을 때 사용하는 것이 좋다.

아무리 작은 크기의 함수라도 여러 번 호출한다면 프로그램의 크기가 커져 실행 속도가 늦어진다.

함수의 코드 크기가 큰 경우에는 inline 함수로 선언했다 할지라도 컴파일러가 일반함수로 취급할 수 있다.

 

객체의 멤버 호출

 

직접참조연산자: “.” - 일반 객체가 멤버에 접근하기 위해 사용

간접참조연산자: “->” - 포인터 객체가 멤버에 접근하기 위해 사용

 

클래스 다이어그램: 맨 위에는 클래스 명, 중간에는 변수명:자료형, 맨 밑에는 + 함수명