최대한 객관적인 자료를 토대로 공부하려고 하지만, 처음하는 공부이기 때문에 정리과정에서 수 많은 주관이 들어가고, 틀린 정보가 생성될 수 있습니다.모쪼록 읽는데 있어 주의하시고, 꼭 공식문서와 크로스 체킹해서 올바른 정보만 가져갈 수 있도록 참고했으면 좋겠습니다.기본
네임스페이스는 C++에도 있다. 이름의 충돌을 방지하고, 코드의 조직화를 돕는다. Cnamespace안에 선언할 수 있는 형식classinterfacestructenumdelegatenested namespaces can be declared except in file
조금 알아보니, using이라는 키워드는 두 가지 사용방법이 있다.using System과 같이 namespace와 함께 사용되는 방법, 그리고 리소스 관리를 위한 using문법(제대로 공부하진 않아서 대충 말한거다).키워드는 같지만 사실상 별개의 개념이 맞는 것 같다
프로젝트를 생성하면 가장 기본적으로 사용할 수 있도록 설정된 namespace이다. 너무나도 당연한 나머지, 요즘 버전의 기본 템플릿에는 using System조차 숨겨놨다.그럼 숨겨놓은것을 어떻게 볼 수 있을까?왼쪽위에 {}모양을 클릭하면 볼 수 있다.global 키
C다만 객체지향 언어로서의 일관성을 지켜야만 한다고 생각했는지, Main함수는 class로 감싸져있다. Main함수는 특정 인스턴스가 호출해야하는 함수가 아니기 때문에 앞에 static 키워드가 붙어있는 함수로 만들어진다.파라미터나 반환값 등 함수 시그니처를 변경할 수
C++에서 class와 struct의 차이점은 단 하나이다. 기본 접근 제한자가 class는 private, struct는 public이라는 점이다. 그럼에도 불구하고 둘의 용도를 구분해서 사용하는 프로그래머들이 꽤 있다. 이는 C의 잔재라고 생각한다. C에서는 cla
접근 제한자는 객체지향의 추상화와 은닉성을 돕는 문법이라고 생각한다. 접근제한자를 통해 구체적인 구조 자체는 숨기고, 사용하기 편한 인터페이스만을 공개하는 것으로 추상화를 돕고, 사용자가 직접 접근하면 데이터의 무결성이 깨질 수 있는 데이터를 보호하는 도구라고 말하면
C++에서의 static은 상당히 뭐랄까... 하나의 설명으로 정의하기가 어려운 키워드였던것 같다. 왜냐하면 사용되는 스코프에 따라 작동하는 방식이 조금씩 달랐기 때문이다. \[C++] static keyword에 대해서 Cstatic 멤버함수와 static 멤버변수는
내가 아는 지식을 기반으로 해서 간단하게 정리하고 마무리하자|자료구조 형식|C++|C|------|---|---||HashMap|std::unordered_map|Dictionary||HashSet|std::unordered_set|HashSet||동적배열|std::v
C++에도 추상클래스가 있다. 클래스 안에 순수가상함수를 선언하면 그 클래스는 추상클래스가 된다. 순수가상함수는 추상클래스를 상속받는 클래스가 강제로 구현해야하는 함수이다.추상클래스는 C++에서 두가지 이유때문에 쓴다.1\. 정의하고자 하는 개념이 구체적인 대상이 아닐
클래스, 멤버 함수에 붙일 수 있는 키워드로 C++의 final의 역할을 한다.해당 메서드나 클래스는 더이상 파생될 수 없다는 것을 명시적으로 보여준다
interfaceasync, awaitdelegateLINQGarbage Collectionreadonly & constEventNullable type
인터페이스와 추상클래스를 비교하는 경우가 많다. 아마 메서드를 강제한다는 점에서 공통점을 찾을 수 있기 때문이 아닐까? 실제로 언리얼 같은 경우 추상클래스와 다중상속을 이용하여 인터페이스 클래스 템플릿을 만들어놓기도 하였다. 그런 의미에서 (c++은 클래스의 다중상속이
C++의 함수포인터를 생각하면 쉽다. 코드영역에 저장되어있는 함수를 참조하기 위해 사용하는 문법이다. 다만, delegate는 함수포인터의 시그니처(반환형과 매개변수 타입)를 정의하는 클래스라고 생각하면 된다. MSDN - delegateMSDN에서는 델리게이트를 다음
기본적으로 값형식 자료형은 null로 초기화할 수 없다.그러나 Nullable 문법을 사용한다면 가능하다.1\. Nullable제너릭을 사용2\. 자료형? 사용C++에서 코딩을 할 때, 값이 존재하지 않는다는 의미, 또는 값이 유효하지 않는다는 의미를 가지는 수를 따로
Garbage Collection >자동 메모리 관리 시스템. 가비지 컬렉션을 통해 메모리를 관리하는 언어를 Managed Language라고 한다. 메모리 관리로 인한 프로그래머의 실수를 줄여준다는 장점이 있지만, 메모리 참조에 대한 정보를 일정 주기마다 추적하고 관
면접도 많이 보고, 얻을게 많았던 한달, 가장 아쉬운 한달이었다.심기일전. 다시 처음부터 해보자!System.Object ClassSystem.ValueType ClassBoxing, UnBoxingReflection, RTTIAttribute, MetaDataGene
C두 개체를 비교하고, 같으면 true, 다르면 false를 반환하는 것이 기본 동작이다.다만 여기서 '같다'와 '다르다'라는 개념이, 참조타입이냐, 값타입이냐에 따라 달라진다.참조 동등성인스턴스가 참조타입일 경우, 진짜 둘이 같은 개체인지를 판단한다. 즉 주소값 비
스택에 할당된 값형 개체를 object 클래스로 업캐스팅 하면, Heap에 새로운 동적할당 메모리가 생기고 그곳에 값형 개체의 데이터를 복사한다. 이를 Boxing이라고 한다.추가로 인터페이스를 상속받은 값형 자료형도, 만약 해당 인터페이스로 업캐스팅을 한다면 Boxi
모든 값타입 자료형의 부모 클래스이며, Object를 상속받는다.참조형식과 다르게 동작함을 보장하며, 값 형식은 구조체에서 스택 할당되거나 인라인으로 할당된다.클래스 안에 멤버로 존재할때, 힙에 할당되어도 클래스 내부에서 연속된 메모리를 사용하기 때문에 성능적으로도 어
MetaData >컴파일 타임에 어셈블리파일에 저장되는 정보, 주로 사용되는
string은 C여기서 불변이라 함은, string으로 만들어진 인스턴스의 내용을 바꿀수 없음을 의미한다.다만 const나 readonly처럼 아예 막아놓은 것이 아니라, 문자열 변경을 할때, 완전히 새로운 메모리를 할당하고 수정한다. 즉 string 문자열 변경이 잦
간단하게 말해서 object형태로 업캐스팅해서 자료구조에 담아놓는 형태다.논제네릭 자료구조를 사용하는것은 더이상 권장되지 않는다. 두가지 이유가 있다.1\. type unsafe 어떤 자료형의 데이터도 담을 수 있기 때문에, 사용한다고 하면 항상 개발자가 데이터가 어떤
함수를 구현하다 보면, 리턴해야할 값들이 여러개일때가 있다. 당연히 return을 사용한 반환만으로는 부족할 수 있기 때문에, 반환해야할 데이터를 담을 버퍼를 인자로 넣어 전달하고 함수 내부에서 해당 버퍼에 반환값을 담은 다음에, 사용하는 경우가 많다. out 키워드는
in Keyword >const 자료형& 이다. 사용이유? 너무 간단하다. 해당 데이터를 참조로 넘기는것이 효율적이고, 동시에 해당 값이 함수 내부에서 변경되지 않음을 보장하기 때문에 안전하다. *해당 의미는 매개변수로 사용될때만입니다.