본문 바로가기

C++ & UNREAL

(9)
전방선언 전방선언이란 클래스, 구조체, 함수등의 선언을 미리 알려주는 것. 실제 정의는 나중에 하며 컴파일 시간 단축과 메모리의 효율적 활용이 가능해짐. class MyClass; // 전방 선언class AnotherClass { MyClass* ptr; // MyClass의 포인터 사용};   private: UPROPERTY() class UCapsuleComponent* CapsuleComp;  전방선언을 하게 되면 해당 헤더파일을 포함하는 다른 파일들이 쓸대없는 코드를 포함하는걸 막을 수 있음. 2번째 예시에서 전방선언을 하지 않고 #include를 통해 UCapsuleComponent를 가져왔다면 해당 클래스를 포함하는 다른 파일들도 모두 UCapsuleComponent를 포함하게 됨.
C++ 기능 배우기 7 상속1. 기존 클래스에 새로운 기능 추가2. 클래스에 새로운 데이터 추가3. 클래스 메서드의 동작 방식 변경  class NewClass : public RootClass{ //기초 클래스형의 데이터 멤버들 저장 //기초 클래스형의 메서드 사용 가능 //파생 클래스 자신의 생성자 필요 //기초클래스의 private에 접근 불가 private: int NewInt; public: NewClass(); };NewClass::NewClass(int a, int b, int c) : BaseClass(a,b){ NewINt = c;}
C++ 기능 배우기 7 (분할컴파일, class) 분할컴파일분할해서 파일을 컴파일하고 합치기헤더파일을 #include "파일이름"형태로 참조 클래스를 헤더파일에 만들고 속하는 함수들을 이름만 선언-> 소속 함수들의 자세한 내용을 별도 소스파일에 작성 후 #include로 헤더파일과 연결-> main.cpp에서 #include사용시 소스파일에 작성한 함수 사용 가능. #ifndef STRUCT//code#endif형태를 이용해 여러번 불러오지 않도록 관리  추상화와 클래스class className{private: string name; int age; float height; public: void type(string, int, float); void printName(int, float); className();..
C++ 기능 배우기 6 (함수2) 인라인 함수와 디폴트 매개변수일반적으로 함수의 호출은 함수의 주소로 점프하는 과정.인라인 함수는 컴파일된 함수 코드가 프로그램의 다른 코드에 삽입되어있어 컴파일러가 인라인 함수를 호출한다면 점프가 아닌 그에 대응하는 함수 코드로 대체 inline float square(float x) { return x*x; }int main(){ int a = 5; float b = square(a); return 0;}  디폴트 매개변수는 함수를 정의하는 부분에서 설정 가능int func(int*, int n = 1);int main(){ int arr[4]={1,2,3,4}; int sum = func(arr); return 0;}int func(int* arr, int n){ ..
C++ 기능 배우기 5 (함수) 함수함수에 필요한 조건들1. 함수 정의 제공2. 함수 원형 제공3. 함수 호출(반환형) 함수이름(입력형 입력변수명){ //code}  반환형 함수명(입력형) 형태로 미리 선언해두고 사용 가능.  배열을 인자로 받을 시 첫 원소의 주소를 받음int numArr(int* arr, int* end){ int total = 0; for (int* i=arr; i != end; i++){ total += *i; } return total;}  구조체는 그 자체로 전달시 값이 복사되어 전달됨.(원본에 영향 안줌)너무 크다면 구조체를 포인터로 전달시 복사를 안해서 시간적 이득.(간접 연산자인 -> 로 구조체에 접근해야함)   함수의 포인터함수도 주소를 가지고 있음.어떠한 함수에..
C++ 기능 배우기 4 if else 구문if (true) //code if (true){ //code}else{ //code}if (true){ //code}else if (true){ //code}   논리표현식//or 연산 ||3==3 || 3==2 -> true//and 연산 &&3==3 && 3==2 -> false//not 연산 !3!=2 -> true   switch구문, break continue switchswitch(표현식){case label1: //code break;case label2: //code break;}case에 없는 값이 들어오면 실행되지 않음.break를 사용하지 않으면 실행된 케이스부터 아래 케이스들이 쭉 실행됨. continue는 파이썬과..
C++ 기능 배우기 3 (반복문) 반복문for문for (int i = 0; iint a[3] = { 1, 3, 5};for (int i: a){ couti++ //변수의 값을 판단하고 증가++i //변수의 값을 증가하고 판단    while / do while문int i = 0;while (iint i = 0;do { i++;} while ( i do while은 먼저 반복 후 조건 검사.
C++ 기능 배우기 2 (배열, 문자열, 입력, string, 구조체, 고용체, 열거체, 포인터, delete) 배열과 문자열short month[12] = {1, 2, 3}; //남은 공간은 사용하지 않은채로 선언. int temp[4][5] = { {1,2,3,4,5}, {6,7,8,9,10}}; //2차원 배열초기화를 선언 이후 나중에 할 수 없음배열을 다른 배열에 통째로 대입할 수 없음첫 번째 원소를 0으로 초기화시 나머지 원소들은 모두 0으로 초기화됨초기화시 대괄호 속을 비우면 컴파일러가 알아서 할당해줌char a[] = "hello";이런식으로 문자열  사용자 입력과 string char name1[15];cin >> name1위 방법은 공백 이전까지만 저장됨cin.getline(name1, 15); //get과 getline은 같은기능을함위 방법으로 공백을 포함하여 입력 받을 수 있음 str..