클래스와 구조체의 차이1
클래스와 구조체의 차이2
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class Temp
{
public int a;
}
public class Program : MonoBehaviour
{
int a = 10; // 값타입 : a 에 바로 10이라는 값을 할당할 수 있다.
Temp temp.a = 10; // 참조타입 : 아직 10이 들어갈 메모리가 할당되지 않았기 떄문 에러발생
}
☝ 값타입 메모리와 참조타입 메모리의 차이
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Temp
{
public int a;
}
public class Program : MonoBehaviour
{
int a = 10; // 값타입 : a 에 바로 10이라는 값을 할당할 수 있다.
//Temp temp.a = 10; // 참조타입 : 아직 10이 들어갈 메모리가 할당되지 않았기 떄문
Temp temp = new Temp(); // new 키워드를 이용해서 메모리를 할당!
void Start()
{
temp.a = 10;
}
}
☝ new 키워드를 활용해 메모리를 할당
👇 구조체 예시코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
struct 할아버지
{
public void 할아버지재산()
{
Debug.Log("[1] 할아버지 재산");
}
}
struct 아버지
{
public void 아버지재산()
{
Debug.Log("[2] 아버지 재산");
}
}
struct 아들
{
public void 아들재산()
{
Debug.Log("[3] 아들 재산");
}
}
public class Program : MonoBehaviour
{
할아버지 grandFather;
아버지 father;
아들 son;
void Awake()
{
grandFather.할아버지재산();
father.아버지재산();
son.아들재산();
}
}
구조체는 값타입 이므로 new로 따로 메모리 할당을 안해주어도 에러가 나지 않는다 그러나 클래스처럼 서로 상속을 받지 못한다
👇 클래스 예시 코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class 할아버지
{
public void 할아버지재산()
{
Debug.Log("[1] 할아버지 재산");
}
}
class 아버지 : 할아버지
{
public void 아버지재산()
{
Debug.Log("[2] 아버지 재산");
}
}
class 아들 : 아버지
{
public void 아들재산()
{
Debug.Log("[3] 아들 재산");
}
}
public class Program : MonoBehaviour
{
할아버지 grandFather;
아버지 father;
아들 son;
void Awake()
{
grandFather = new 할아버지();
father = new 아버지();
son = new 아들();
grandFather.할아버지재산();
father.아버지재산();
son.아들재산();
}
}
클래스는 상속을 받고있기에 son.할아버지재산(); 도 가능하다