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#中通常需要分开声明和构造
相关推荐
jllws11 分钟前
数据类设计_图片类设计之8_自由图形类设计_(前端架构)
前端·c++·数据类设计
勇敢滴勇18 分钟前
Qt信号与槽高级特性与项目实战:原理剖析与工程化应用指南
网络·数据库·c++·qt·qt5·qt6.3
码农诗人40 分钟前
C++调用ffmpeg解复用、解码案例
c++·ffmpeg·解码·解封装
sin258041 分钟前
蓝桥杯C++基础算法-多重背包
c++·算法·蓝桥杯
sin258041 分钟前
蓝桥杯C++基础算法-0-1背包
c++·算法·蓝桥杯
追逐时光者1 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
后端·c#·.net
泽02021 小时前
c++之迭代器
c++
uyeonashi2 小时前
算法专题(七):分治-快排
数据结构·c++·算法·leetcode·排序算法
小老鼠不吃猫2 小时前
万象更新(一)VTK 坐标轴、相机方向坐标轴、立方体坐标轴
c++·开源·图形渲染
这学芝士 多是一件美事2 小时前
【C++】vector
linux·c语言·数据结构·c++·算法