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#中通常需要分开声明和构造
相关推荐
我是唐青枫2 小时前
C# 泛型数学:解锁真正的类型安全数值运算
c#·.net
故事不长丨7 小时前
C#定时器与延时操作的使用
开发语言·c#·.net·线程·定时器·winform
“αβ”7 小时前
MySQL表的操作
linux·网络·数据库·c++·网络协议·mysql·https
阿桂有点桂8 小时前
C#使用VS软件打包msi安装包
windows·vscode·c#
十五年专注C++开发8 小时前
Asio2: 一个基于 Boost.Asio 封装的高性能网络编程库
网络·c++·boost·asio·asio2
c#上位机8 小时前
halcon图像增强之分段灰度拉伸2
c#·上位机·halcon·机器视觉
gcfer8 小时前
CS144 中的C++知识积累
c++·右值引用·智能指针·optional容器
yue0088 小时前
C# Directory的用法介绍
开发语言·c#
Bona Sun9 小时前
单片机手搓掌上游戏机(二十)—pico运行doom之编译环境
c语言·c++·单片机·游戏机
Albert Edison9 小时前
【项目设计】C++ 高并发内存池
数据结构·c++·单例模式·哈希算法·高并发