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#中通常需要分开声明和构造
相关推荐
艾莉丝努力练剑14 分钟前
【AI大模型接入SDK】ChatSDK 集成测试概述
jvm·c++·人工智能·学习·面试·集成测试·sdk
艾莉丝努力练剑20 分钟前
【AI大模型接入SDK】ChatSDK:CMake构建静态库完整实现
java·开发语言·网络·c++·人工智能·学习·sdk
東隅已逝,桑榆非晚29 分钟前
stack和queue(类函数学习和模拟实现)
c++·笔记·学习
.道阻且长.37 分钟前
C++11 :右值引用的作用,引用折叠和完美转发
java·开发语言·c++
朔北之忘 Clancy10 小时前
2025 CSP-J 第二轮真题解析
c++·青少年编程·题解·noip·csp·信奥赛·noi
longlongzihan10 小时前
LeetCode 17电话号码的字母组合:回溯算法(DFS)详解
c++·算法·leetcode·深度优先
yolo_guo10 小时前
调试mysql延迟与libevent回调实际发送回复时机问题
c++·mysql·libevent
淡海水10 小时前
01-03-认知篇-C#内存模型深度解析
unity·c#·游戏引擎·.net·gc
今晚打老虎11 小时前
c++之提高A(前缀和)(第三课)
数据结构·c++·算法
by2099912 小时前
从结构体到对象:正式学习C++类的骨架、封装与this指针
c++·经验分享·学习