어떤 언어로 코딩을 하든 공통적으로 염두해야할 점은
사용자가 사용하기 편하게 코드를 짜야한다는 점이다.
첫번째 차이점, 변수와 인스턴스 (Instance)

• 사전적 의미는‘예시’ 혹은 ‘경우’
• 변수 대신 '인스턴스'라고 표현
• int a; -> int형식에 대한 인스턴스 a
• 다양하게 사용되 는용어
• 프로세스 인스턴스
두번째 차이점, 변수 선언 및 정의
int main()
{
int a = 10;
int b(10);
int c(a);
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
return 0;
}
• C언어와 달리 C++에서는 변수의 초깃값을 소괄호 속에 기술.
• C언어의 선언 및 정의도 무방.
• auto 예약어의 의미는 자동변수 선언이 아닌 초깃값의 형식을 자동으로 따르도록 하는 것으로 변경. (C++11)
세번째 차이점, 전혀 다른 메모리 동적 할당
• 변수는메모리를 사용하는 문법
• C++의 class는 C언어의 구조체와 유사
• 메모리를 할당 해제하는 개념이 아니라 클래스에 대한 인스턴스(혹은 객체)를 생성하거나 삭제하는 방식
• new / delete 연산자로 메모리 할당 및 해제 (메모리 크기를 기술하지 않음.)
네번째 차이점, 포인터 대신 참조자 사용
void swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
• 개념적인 측면에서 값을 변경 할 수 없고 반드시 초깃값을 기술해 선언하는 포인터와 유사
• 인스턴스에 대한 참조자를 선언
• 참조형은 반드시 선언과 동시에 초기화가 이루어져야함
- 임시 객체
int a(3), b(4), c; c = a + b
• a + b 연산 시 두 int 인스턴스에 대한 덧셈 연산의 결과는 임시 인스턴스 (혹은 객체)
• 임시 객체는 c에 단순 대입 후 소멸
• 임시 객체는 이름을 갖지 않으며 보통 해당 구문 실행 후 자동 소멸
- r-value 참조
int &&rdata = a + 5; c = 3 + 4 + 5;
• 형식 && 문법으로 선언하며 일반 참조자와 달리 &가 2회 연속 등장
• 3 + 4 + 5 연산 시 3 + 4 연산의 임시결과를 이어지는 5와 덧셈하고 다시 임시결과 도출
int testFunc(int param)
{
int result = param * 2;
return result;
}
int main()
{
int input = 0;
std::cout << "Input number: ";
std::cin >> input;
int&& rData = (input + 5);
std::cout << rData << std::endl;
int&& result = testFunc(10);
result += 10;
std::cout << result << std::endl;
return 0;
}
다섯번째 차이점, 범위 기반 for문
for(auto 요소변수 : 배열이름) 반복구문;
• 배열 요소의 개수 만큼 반복횟수가 자동으로 결정됨
• 배열 요소의 개수가 달라져도 반복문을 수정할 필요가 없음
• 단, 컴파일러가 반복횟수를 판단 할 수 있어야 사용가능
int main()
{
int list[] = { 10, 20, 30, 40, 50 };
for (int i = 0; i < 5; ++i)
std::cout << list[i] << ' ';
std::cout << std::endl;
for (auto& element : list)
element = 5;
std::cout << std::endl;
for (const auto& element : list)
std::cout << element << ' ';
std::cout << std::endl;
return 0;
}
#눈여겨 본것들
1. C++의 메모리 동적할당
- C++의 클래스는 C언어의 구조체와 유사하며 메모리를 할당 해제하는 개념이 아니라 클래스에 대한 인스턴스를 생성하거나 삭제하는 방식이므로 Heap 영역에 할당된다는 점.
- new / delete 연산자로 메모리 할당 및 해제 (메모리 크기를 기술하지 않음.
2. 임시 객체와 r-value 참조
- 연산을 할때 실제로 인스턴스가 저장되지는 않고 결과값에 대입한 뒤에 사라진다는 점.
- 하지만 r-value 참조로 &&를 사용하게 된다면 함수가 종료되기 전까지는 유효하게 사용할 수 있다는 점.
#참조
https://www.inflearn.com/notes/54852
https://www.inflearn.com/notes/54852
www.inflearn.com
'All Development' 카테고리의 다른 글
| C++) C++의 특징 Part 1 (1) | 2024.01.08 |
|---|---|
| C++) C와 C++ 의 차이점 Part 2 (1) | 2024.01.05 |
| Unity) Lerp 의 사용법 (0) | 2023.10.28 |
| Sparta_algorithm_course_05) velog (1) | 2022.07.29 |
| Sparta_algorithm_course_04) velog (1) | 2022.07.23 |