C++

C++ 기초 1

끄적a 2020. 12. 24. 16:00

JAVA만 하던 나에게 C++ 거의 동일하면서도 다른것들이 있어 정리해보려고한다. 

여러가지가 있겠지만 내가 헷갈리는 것들만 작성하도록 하겠다. 

C++ 관련 정보는 (www.tcpschool.com/)여기서 얻었다.

 

1. 메모리의 동적 할당(dynamic allocation)

 

JAVA C++
MyClass a = new MyClass(); int* a = new int;
delete a;

2. 구조체(struct)

java에 없는 개념인데 kotlin에서 data class와 비슷하게 사용되는 느낌이다. 

구조체를 함수의 인자와 반환 값으로 사용 할 수 있다. 

int CalcProperty(Prop* money)
{
    money->savings = 100; // 호출된 함수에서 원본 구조체의 데이터를 변경
    return (money->savings - money->loan);
}  

int CalcProperty(const Prop* money) // const 키워드를 사용하여 구조체의 데이터를 직접 수정하는 것을 방지함.
{
    //money->savings = 100; // 호출된 함수에서 원본 구조체의 데이터를 변경
    return (money->savings - money->loan);
}

3. 인수 전달 방법

java는 primitive type은 Call By Value, reference type은 Call by Reference 라고 한다. 

C++은 이걸 정의? 해줄 수 있다. 

Call By Value Call by Reference

int main(void)
{
    int var = 10;
    Local(var);
    cout <<var;
    return 0;
}
void Local(int num)
{
    num += 10;
}

int main(void)
{
    int var = 10;
    Local(var);
    cout <<var;
    return 0;
}
void
 Local(int& num)
{
    num += 10;
}

출력 10; -> 원본 값이 변경 되지 않음

출력 20; -> 원본 값이 변경이 됨

4. 함수 포인터

먼가 자바에는 없고 코틀린에서는 있는 개념 같다. 

typedef double (*Arith)(double, double); // typedef 키워드를 이용한 새로운 이름 선언
//double Calculator(double , double, Arith); // typedef

int main(void)
{
  double (*calc)(double, double) = NULL; // 함수 포인터 선언
  //Arith calc = NULL; // 함수 포인터 선언 typedef
  
  double num1 = 3, num2 = 4, result = 0;
  calc = Add;
  result = Calculator(num1, num2, calc);
 }
 
double Add(double num1, double num2) { return num1 + num2; }
double Calculator(double num1, double num2, double (*func)(double, double))
{ return func(num1, num2); }
//double Calculator(double num1, double num2, Arith func) { return func(num1, num2); }// typedef

5. 디폴트 인수 

함수 인자의 default 값을 설정 할 수 있다. 

void Display(int x, int y, char ch = 'a', int z = 4); // 가능함.

 

6. 함수 시그니처(function signature)

이거 코틀린에도 있는거 같은데 아래의 경우 함수 시그니처가 2개의 double인자를 가지고 double return의 시그니처를 가지고 있다. 

 

 double (*calc)(double, double)

7. 변수 종류 

아래와 같다고 한다. 

출처 : www.tcpschool.com/

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com