본문 바로가기
728x90

분류 전체보기102

[Unreal] UFUNCTION의 매크로들 (BlueprintCallable, BlueprintImplementableEvent, BlueprintNativeEvent) UFUNCTION 매크로 중 유사한 기능을 하는 3가지 매크로가 존재한다. BlueprintCallable CPP 코드로 만든 함수를 블루프린트 또는 레벨블루프린트에서 호출할 수 있도록 하는 매크로이다. 이 매크로를 사용하여 만든 함수는 블루프린트에서 호출은 가능하나 추가적인 조작(오버라이딩)이 불가능하다. 또한 CPP코드에서 반드시 정의를 구현해야 한다. 함수의 내용이 변경되어서는 안되지만 블루프린트에서도 사용해야할 때 추가한다. BlueprintImplementableEvent 이 매크로를 사용한 함수는 CPP에서 정의할 수 없으며 블루프린트에서 함수 내부를 정의해야한다. 순수 가상 함수와 같다고 볼 수 있다. (또는 interface) CPP에서 함수의 정의부를 구현하면 에러가 발생하며 빌드가 되지.. [Unreal4]/기능 2022. 1. 15.
[C] while문 안에서 scanf 받기 scanf 함수는 파일의 끝을 만나거나 에러가 발생한 경우 -1을 반환한다. 이를 이용하여 while문의 조건으로 사용할 수 있다. int main() { int num1, num2; while (scanf("%d %d ", &num1, &num2) != -1) { printf("%d\n", num1 + num2); } } 위 코드는 2개의 수를 입력 받아 합을 출력하는 코드다. while문은 조건이 참일 때 동작하므로 scanf가 에러 또는 파일의 끝(EOF)를 만날 때까지 무한히 반복한다. [프로그래밍 공부]/C&C++ 2022. 1. 13.
[C++] 가상 함수 (Virtual Function) 상속간에 있는 클래스의 자식클래스를 부모클래스에 저장했다고 가정한다. Parent* p = new Child(); 그리고 이 때 Child에만 있는 함수를 실행하면 실행에 실패한다. p는 자료형이 Parent이고 Parent에 없는 멤버 함수는 실행할 수 없기 때문이다. 따라서 Child에만 있는 함수를 사용하기 위해서는 강제형변환을 해줘야한다. 그렇다면 재정의한 함수는 어떻게 될까? p는 자료형이 Parent이기 때문에 Parent에 있는 함수가 실행된다 즉, Child에서 재정의한 함수를 사용하기 위해서는 강제형변환을 통해 변환 후 사용이 가능하다 (static_cast(p))->overridingFunc() 참으로 거추장스럽고 지저분해보인다 이를 간편하게 강제형변환 하지 않고 사용하기 위해 가상함수.. [프로그래밍 공부]/C&C++ 2022. 1. 8.
[C++] 스마트 포인터 스마트 포인터 포인터는 많은 오류의 원인이 되기 쉽다. 가장 큰 이유는 메모리의 해제 때문인데 코딩 공부 초장기에 많이 겪어봤을 것이다. 이런 문제를 회피하기 위해 스마트 포인터가 등장했다. 스마트 포인터를 사용하더라도 포인터를 잘못 사용하거나 이상한 일이 생길 수 있으므로 너무 믿지 말자. 모든 스마트 포인터는 헤더에 정의되어 있다. C++11부터 2가지의 스마트 포인터가 제동된다. shared_ptr 공유 소유권(shared ownership)이라는 개념을 구현한다. 여러 스마트 포인터가 동일한 객체를 참조할 수 있다. 때문에 객체와 그 객체가 가진 자원은 객체에 대한 마지막 포인터가 소멸될 때 같이 소멸된다. 즉, 객체를 가리키고 있는 포인터가 하나도 없을 때 소멸된다. unique_ptr 베타 소.. [프로그래밍 공부]/C&C++ 2022. 1. 8.
[C++] 클래스 상속(inheritance) 상속 Super, Delived, Base, Child, 부모클래스, 자식클래스 등으로 불리는 기능들을 의미한다. 클래스 선언부에 : 를 이용하여 상속을 알린다. 자식클래스는 부모클래스를 상속받아 부모클래스의 멤버변수, 멤버함수를 사용할 수 있는 권한을 가진다. 이 권한은 private, protected, public 에 따라 사용할 수 있는 권한이 다르다. class Car { private: int lotNumber; protected: int Price; int GetLotNumber(); }; int Car::GetLotNumber() { return lotNumber; } class SportCar : public Car { public: void ShowCarPrice(); void Show.. [프로그래밍 공부]/C&C++ 2022. 1. 1.
[C++] 클래스 생성자와 소멸자 생성자 생성자는 클래스가 생성될 때 자동으로 실행되는 함수이다. 클래스에 생성자가 하나도 없는 경우 자동으로 디폴트 생성자를 하나 만들어준다. 생성자는 오버로딩이 가능하여 여러가지 생성자를 만들 수 있다. 생성자는 반환값을 가지지 않는다. 함수의 이름은 항상 자신의 클래스명과 동일하다. class Car { public: int Price; Car(); Car(int value); }; Car::Car() { Price = 1000; } Car::Car(int value) { Price = value; } int main() { Car myCar; Car yourCar(10); std::cout [프로그래밍 공부]/C&C++ 2022. 1. 1.
[C++] 오버로딩과 오버라이딩 차이 오버로딩(Overloading) 오버로딩은 같은 함수명을 다른 매개변수를 사용하여 만들 수 있게 만든 방법 함수명은 같지만 매개변수의 타입과 개수가 다른 것이 특징이다. 반환형은 같아도 되고 달라도 된다. ( 오버로딩에 영향을 주지 않는다 ) 함수명, 매개변수가 같고 반환형만 다르면 같은 함수로 인식힌다. 함수 이름은 같은데 매개변수에 따라 다른 기능을 사용하고 싶을 때 사용한다. void Print() { std::cout [프로그래밍 공부]/C&C++ 2022. 1. 1.
[기타]Install Shild를 이용하여 배포하기 http://yoon-talk.tistory.com/190 내가 만든 컴퓨터 프로그램, 친구들에게 나눠주기! 컴퓨터 프로그램을 만들다 보면, 언젠가 완성된 프로그램을 다른 사람들에게 배포하는 시기가 올 것입니다. 물론 실행 파일 하나만으로도 작동하는 프로그램이 있을 수 있겠죠. 하지만 좀 더 복 www.yoondesign-m.com 매우 잘 정리되어 있는 곳을 공유. [프로그래밍 공부]/기타 2021. 12. 11.
728x90