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

ops/2024/12/14 5:59:33/

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

1. UE4 C++例子:

// 声明和构造合并在一起static ConstructorHelpers::FObjectFinder<UTexture2D> CrosshairTexObj(TEXT("/Game/Path"));// 使用加载的资源UTexture2D* Texture = CrosshairTexObj.Object;

2.C#等效写法:

// 构造函数声明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. 基本构造函数对比:

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

// C#

public class MyClass 
{private int value;public MyClass() {} // 默认构造函数public MyClass(int x) // 带参数构造函数{ value = x;}
}// 使用MyClass obj1 = new MyClass();    // 调用默认构造函数MyClass obj2 = new MyClass(10);  // 调用带参数构造函数

C++的构造方法解析: 

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

主要区别:

  • C++不需要new关键字创建对象
  • C++构造函数可以使用初始化列表(:value(x))
  • C#必须使用new创建对象
  • C++中可以在声明时直接调用构造函数
  • C#中通常需要分开声明和构造

http://www.ppmy.cn/ops/141736.html

相关文章

yarn 安装问题

Couldn’t find package “regenerator-runtime” on the “npm” registry. Error: Couldn’t find package “watch-size” on the “npm” regist 标题Error: Couldn’t find package “babel-helper-vue-jsx-merge-props” on the “npm” registry. Error: Couldn’t f…

React 第十六节 useCallback 使用详解注意事项

useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook&#xff0c;返回一个函数的 memoized的值&#xff1b; 2、如果多次传入的依赖项不变&#xff0c;那么多次定义的时候&#xff0c;返回的值是相同的,防止频繁触发更新&#xff1b; 3、多应用在 父组件为函…

C++面试:HTTP1.0/1.1,HTTP2.0,HTPP3.0的区别

1.你对HTTP1.0/1.1&#xff0c;HTTP2.0&#xff0c;HTPP3.0有什么了解&#xff1f; 答&#xff1a;HTTP1.0&#xff1a; ①属于无连接式&#xff0c;每次发送HTTP请求都需要建立TCP连接。 ②会造成发送时的对头阻塞&#xff0c;当上一个请求没有应答&#xff0c;当前的请求就会…

大数据常用的算法--常用的分类算法

概述 分类算法是根据数据特征来预测数据的类别。 分类算法是一种监督学习&#xff08;Supervised Learning&#xff09;方法&#xff0c;它需要一个已知的类别标签的训练数据集&#xff0c;通过学习这个数据集来预测新的数据点的类别。例如&#xff0c;在电子邮件过滤系统中&am…

PostgreSQL JSON/JSONB 查询与操作指南

PostgreSQL 提供了强大的 JSON 和 JSONB 数据类型及相关操作&#xff0c;适用于存储和查询半结构化数据。本文将详细介绍其常用操作。 1. 基础操作 1.1 JSON 属性访问 ->: 返回 JSON 对象中的值&#xff0c;结果为 JSON 格式。 SELECT {"a": {"b": 1…

《庐山派从入门到...》IDE启动

《庐山派从入门到...》IDE启动 《庐山派从入门到...》IDE启动 IDE&#xff08;Integrated Development Environment&#xff09;&#xff0c;即集成开发环境&#xff0c;是一种软件应用程序&#xff0c;旨在为软件开发人员提供一个全面的工具集合&#xff0c;以便可以更高效地编…

SQL Server 中,`timestamp` 和 `rowversion`类型特性

在 SQL Server 中&#xff0c;timestamp 和 rowversion 是用于标识行版本的特殊数据类型&#xff0c;rowversion 是 timestamp 的新名称和推荐的替代品&#xff0c;可以理解为rowversion 是 timestamp 的同义词。&#xff1a; 1. timestamp 本质&#xff1a; timestamp 是 SQL …

129道Go面试八股文(答案、分析和深入提问)整理

1. 在Golang中&#xff0c;任意类型T()都能够调用*T的方法吗&#xff1f;反过来呢&#xff1f; 回答 在 Go 语言中&#xff0c;关于任意类型 T 和指针类型 *T 调用方法的规则如下&#xff1a; 任意类型 T 调用 *T 的方法&#xff1a; 如果你有一个类型 T&#xff0c;那么 T 的…