C++과의 차이점

개발 환경 및 용도

C++은 컴파일 시점에 기계어로 변환되는 중간 수준 언어로, 저수준(Low-level)과 고수준(High-Level) 언어의 특성을 모두 가지고 있습니다.

성능 최적화가 가능하기 때문에 하드웨어 접근이 필요한 시스템 프로그래밍에 적합합니다.

컴파일러와 플랫폼에 따라 실행 결과나 바이너리 구조가 달라질 수 있습니다.

운영체제, 게임 개발, 임베디드 시스템 등에 사용됩니다.

C#은 고수준 언어로, 메모리 관리가 자동으로 수행됩니다.

CIL(Common Intermediate Language)로 컴파일 되며, 실행 시 JIT(Just-In-Time) 컴파일을 통해 네이티브 코드로 변환됩니다.

.NET 프레임워크로 윈도우에서 실행되며, .NET Core/Mono, Unity 등으로 다양한 플랫폼에서 실행됩니다.

윈도우 기반의 애플리케이션, 웹 서비스, 데스크톱 애플리케이션, Unity 기반 개발에 사용됩니다.

메모리 관리

C++에서는 개발자가 직접 메모리를 할당하고 해제해야 합니다.
이로인해 메모리 누수, 댕글링 포인터가 발생하기도 합니다.

int* ptr = new int(10);

delete ptr;

C#에서는 가비지 컬렉터가 자동으로 메모리 관리를 수행합니다.
가비지 컬렉터의 실행으로 순간 성능이 지연되기도 합니다.

int a = new int;
float[] b = new float[5];

// 가비지 컬렉터가 자동으로 정리

포인터

C++은 포인터를 직접적으로 사용할 수 있어 메모리 주소에 접근하고 조작할 수 있습니다.

int number = 100;
int* ptr = &number;

C#은 보안상의 이유로 직접적인 포인터 사용을 제한합니다.

int number = 100;
int* ptr = &number; // unsafe 블록 내에서만 사용 가능

객체지향

두 언어 모두 OOP를 지원하지만 다중상속에서 차이가 있습니다.

C++은 다중 상속이 가능합니다.

C#은 다중 상속이 불가능하며 인터페이스로 대체합니다.

문법

C++은 C 언어의 확장으로, C와 유사하며 더 복잡한 문법을 가집니다.

#include <iostream>
#include <vector>

int main()
{
	std::vector<int> numbers = { 1, 2, 3, 4, 5 };

	for (int num : numbers)
	{
		std::cout << num << " ";
	}
}

C#은 자바와 유사한 문법으로, C/C++에 비해 상대적으로 쉬운 문법을 가집니다.

using System;
using System.Collections.Generic;

class Program
{
    public static void Main(string[] args)
    {
        List<int> numbers = new List<int> {1, 2, 3, 4, 5};

        foreach (int num in numbers)
        {
            Console.Write(num + " ");
        }
    }
}

Date:     Updated:

카테고리:

태그:

C_Sharp 카테고리 내 다른 글 보러가기

댓글남기기