yebeen.kim

[자료구조] Introduction to C++ 본문

24학년도 1학기/자료 구조

[자료구조] Introduction to C++

yebeen.kim 2024. 3. 12. 23:02

C++ 언어의 특징

  • 객체지향적 프로그래밍 언어
  • C언어에 class를 더한 언어 ( C언어의 확장판 )
  • function library가 많다
  • 확장자명은 .cpp

C vs C++

#include <iostream>
using namespace std;

int i = 0; // C style
int i(0); // C++ style

bool fount(true);

cout << i << endl;
  • c언어의 문법을 사용해도 okay
  • namespace를 사용
  • bool 변수 사용 가능 (true or false)
  • 출력은 cout / 입력은 cin
  • 컴파일러 커맨드 : C 는 gcc / C++ 는 g++

namespace

  • 쓰는 이유 : 서로다른 namespace 에서 변수이름을 같은것을 사용하고 싶을때 
  • 예시코드
#include <iostream>

namespace Space_A{
	int num = 20;
    }

namespace Space_B{
	int num = 30;
    }
    
using namespace std;

int main(){
	int num = 10;
    cout << "main : " << num << endl; // 10
    cout << "A : " << Space_A::num << endl; // 20
    cout << "B : " << Space_B::num << endl; // 30
    return 0;
    }

 

  • namespace 를 사용하면 같은변수명을 사용할 수 있다

Reference variable ( alias ) vs Pointer

  Pointer Reference
문법 int* ptr; int& ref = num;
선언 초기화 없이 선언될 수 있음 반드시 가리키는 변수와 함께 선언되어야함
할당 new 와 delete 연산자를 사용하여
메모리를 할당해야함
한번 선언한 후 다른 객체를 가리키지않는다
가리키고 있는 변수의 별칭으로 사용된다
NULL nullptr로 설정할 수 있음 nullptr로 설정할 수 없음
항상 유효한 변수를 가리키고 있어야함
Dereferencing
(간접 참조)
간접 참조 연산자 * 를 사용해야함 따로 기호를 쓰지않음
자동으로 간접 참조가 됨

 

int n = 100, m = 20;
int &num1 = n;
int &num2 = num1;
num1 = m; //n과 m은 같음

 

  • swap 함수 예제코드 ( 두 변수의 숫자를 바꾸는 함수 )

C++ (Reference)

void num_swap(int &, int &);

int main(){
	const int size(3);
    int arr[size] = {0, 1, 2};
    
    num_swap(arr[0], arr[1]);
    }

void num_swap(int &num1, int &num2){
	int temp = num1;
    num1 = num2;
    num2 = temp;
    }

 

C (Pointer)

void swap(int a, int b);

int main(){
	int x = 10;
    int y = 20;
    
    swap(&x, &y); //x와 y의 주소를 swap함수로 전달한다
    }
    
void swap(int *a, int *b){
	int temp = *a;
    *a = *b;
    *b = temp;
    }