-
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