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#中通常需要分开声明和构造
相关推荐
zh_xuan2 小时前
c++ 类的语法3
开发语言·c++
一律清风3 小时前
【Opencv】canny边缘检测提取中心坐标
c++·opencv
a东方青7 小时前
蓝桥杯 2024 C++国 B最小字符串
c++·职场和发展·蓝桥杯
XiaoyaoCarter8 小时前
每日一道leetcode
c++·算法·leetcode·职场和发展·二分查找·深度优先·前缀树
galaxy_strive8 小时前
qtc++ qdebug日志生成
开发语言·c++·qt
CoderIsArt9 小时前
参数系统的基类Parameter抽象类
c#
Darkwanderor9 小时前
c++STL-list的模拟实现
c++·list
Humbunklung9 小时前
Visual Studio 2022 中添加“高级保存选项”及解决编码问题
前端·c++·webview·visual studio
小乌龟不会飞9 小时前
gflags 安装及使用
c++·mfc·gflags 库
June`10 小时前
专题二:二叉树的深度搜索(二叉树剪枝)
c++·算法·深度优先·剪枝