에디의 우당탕탕 코딩공장

[C++]C에서 C++문법으로 전환하기

by 인턴 에디

✨ [ 이것이 C++이다 ] 책을 공부하고 작성함.

 

1. 자료형

   (1) 변수 선언 및 정의

        - C 문법

int a  = 10;

        - C++ 문법

int a(10);
int b(a);

 

   (2) auto

       초깃값의 형식에 맞춰 선언하는 인스턴스의 형식이 '자동'으로 결정된다.

int main(void)
{
	int a = 10;
    int b = b(a);
    auto c(b);
    
    std::cout<< a + b + c << std::endl;
    
    return 0;
 }

  

    (3) 메모리 동적 할당

C C++
malloc(), free() new, delete
  new 연산자 = 객체의 생성자를 호출
delete 연산자 = 객체의 소멸자를 호출

new, delete 연산자는 내부에서 malloc()과 free()함수를 호출한다.

         

✨ new, delete 연산자

      - C++에서 객체를 동적 할당하고 해제하는 '연산자' 이다.

//단일 인스턴스일 경우
형식 *변수이름 = new 형식;
delete 변수이름;

//배열일 경우
형식 *변수이름 = new 형식[요소개수];
delete[] 변수이름;

✔ C에서는 sizeof 연산을 통해 크기를 계산하여 할당하지만 new 연산자를 활용하면 메모리 크기를 정하지 않는다!

 

   (4) 참조자(Reference) 형식

        ✔ 선언과 동시에 반드시 초기화해야 한다.

형식 &이름 = 원본;

* 상수에는 참조자를 선언 할 수 없다.

   

     -1- 참조형 변수 선언과 정의

int main(void)
{
	int nData = 10;
    
    //nData 변수에 대한 참조자 선언
    int &ref = nData;
    
    //참조자의 값을 변경하면 원본도 변경된다!
    ref = 20;
    cout << nData << endl;
    
    //포인터를 쓰는 것과 비슷하다.
    int *pnData = &nData;
    *pnData = 30;
    cout << nData << endl;
    
    return 0;
 }

 

    -2- r-value 참조

int &&rdata = 3;
int TestFunc(int nParam)
{
	int nResult = nParam * 2;
    
    return nResult;
}

int main(void)
{
	int nInput = 0;
    cout << "Input number: ";
    cin >> nInput;
    
    //산술 연산으로 만들어진 임시 객체에 대한 r-value 참조
    int &&rdata = nInput + 5;
    cout<< rdata << endl;
    
    //함수 반환으로 만들어진 임시 객체에 대한 r-value 참조
    int &&result = TestFunc(10);
    
    //값을 변경할 수 있다.
    result += 10;
    cout << result << endl;
    
    return 0;
}

r-value 참조자는 "임시 결과" ,즉 곧 사라질 대상에 대해 참조자를 부여할 수 있다.

 

(5) 범위 기반 for문

for(auto 요소변수 : 배열이름)
  반복 구문;

✨ 반복 횟수는 배열 요소 개수에 맞춰 자동으로 결정된다!

블로그의 정보

에디의 우당탕탕 코딩 공장

인턴 에디

활동하기