UE5 C+、C++、C# 构造方法区别示例

我们对比一下UE C++、C++ 、C#的构造方法:

1. UE4 C++例子:

cpp 复制代码
// 声明和构造合并在一起

static ConstructorHelpers::FObjectFinder<UTexture2D> CrosshairTexObj(TEXT("/Game/Path"));

// 使用加载的资源

UTexture2D* Texture = CrosshairTexObj.Object;

2.C#等效写法:

cs 复制代码
// 构造函数声明

public class TextureFinder<T>

{

    public T Object { get; private set; }

    public TextureFinder(string path)

    {

        // 加载逻辑

        Object = LoadAsset<T>(path);

    }

}

// 使用方式

static TextureFinder<Texture2D> crosshairTexObj = new TextureFinder<Texture2D>("/Game/Path");

Texture2D texture = crosshairTexObj.Object;

3. 基本构造函数对比:

cpp 复制代码
// C++

class MyClass {
public:                        // 公共访问修饰符
    MyClass() {}              // 默认构造函数,无参数
    MyClass(int x) : value(x) {} // 带参数构造函数,使用初始化列表
private:                      // 私有访问修饰符
    int value;               // 私有成员变量
};

// 使用

MyClass obj1;           // 调用默认构造函数

MyClass obj2(10);      // 调用带参数构造函数

// C#

cs 复制代码
public class MyClass 
{
    private int value;
    
    public MyClass() {} // 默认构造函数
    public MyClass(int x) // 带参数构造函数
    { 
        value = x;
    }
}


// 使用

MyClass obj1 = new MyClass();    // 调用默认构造函数

MyClass obj2 = new MyClass(10);  // 调用带参数构造函数

C++的构造方法解析:

cpp 复制代码
MyClass(int x) : value(x) {}
   |      |    |    |
   |      |    |    └─ 参数x的值
   |      |    └─ 将要初始化的成员变量
   |      └─ 构造函数参数
   └─ 构造函数名(与类名相同)

主要区别:

  • C++不需要new关键字创建对象
  • C++构造函数可以使用初始化列表(:value(x))
  • C#必须使用new创建对象
  • C++中可以在声明时直接调用构造函数
  • C#中通常需要分开声明和构造
相关推荐
zjnlswd3 小时前
C#学习笔记4
笔记·学习·c#
烧酒同学4 小时前
【C++】记录size of std::vector的巧妙坑
开发语言·c++·图形渲染
曹牧5 小时前
C#:List<string>特定格式输出
windows·c#
Z5998178416 小时前
c#软件开发学习笔记--Modbus-TCP/UDP网口通讯
笔记·学习·c#
@呱呱爱学习6 小时前
C++大成之路_ STL容器_ Vector
开发语言·c++
码匠许师傅7 小时前
【C++ 面试真题】19. 聊聊 C++ 的迭代器
开发语言·c++·面试
qeen877 小时前
【数据结构】红黑树的算法原理解析与实现
开发语言·数据结构·c++·算法·红黑树
曹牧7 小时前
C#:取的多个药品批准文号中的一个
c#
码匠许师傅7 小时前
【C++ 面试真题】20. 聊聊 C++ 的标准库常用算法
c++·算法·面试
白色冰激凌8 小时前
[SECS/GEM研究] (六)SML与数据序列化
c++·secs/gem