new-operator相关内容

限制泛型类型参数具有特定的构造函数

我想知道为什么对泛型类型参数的新约束只能在没有参数的情况下应用,也就是说,可以约束类型具有无参数构造函数,但不能约束类具有,例如,接收 int 作为参数的构造函数.我知道解决这个问题的方法,使用反射或工厂模式,效果很好,好吧.但我真的很想知道为什么,因为我一直在思考这个问题,我真的想不出无参数构造函数和带有参数的构造函数之间的区别,可以证明对新约束的这种限制是合理的.我错过了什么?非常感谢 ..
发布时间:2021-12-15 10:12:55 C#/.NET

virtual、override、new、sealed override的区别

我对 OOP 的一些概念感到很困惑:virtual、override、new 和 sealed override.任何人都可以解释这些差异吗? 我很清楚,如果要使用派生类方法,可以使用override关键字,这样派生类将覆盖基类方法.但我不确定 new 和 sealed override. 解决方案 virtual 关键字用于修改方法、属性、索引器或事件声明,并允许它在派生的班级.例 ..
发布时间:2021-12-12 08:21:45 C#/.NET

为什么 String 不需要 new 关键字

我是 Java 新手. 在java中,String是一个class.但是我们不必使用 new 关键字来创建 String 类的对象,而 new 用于为其他类创建对象.> 我听说过类似 Integer、Double 之类的 Wrapper 类,它们与此类似.但是 String 不是 Wrapper,不是吗? 实际上我使用时发生了什么 String message = "Hai"; ..
发布时间:2021-12-11 19:56:11 Java开发

new 关键字在底层做了什么?

我很好奇 new 关键字除了改变 this 范围所指的内容之外,在后台还能做什么. 例如,如果我们将使用 new 关键字使函数在对象上设置属性和方法与仅使函数返回新对象进行比较,那么新对象有什么额外的作用吗? 如果我不想从函数构造函数创建多个对象,这是首选 var foo2 = function () {var temp = "测试";返回 {getLol: 函数 () {返回温度; ..
发布时间:2021-12-11 19:52:12 前端开发

'new' 关键字在 Java 中的实际作用是什么,我应该避免创建新对象吗?

我不久前就注册了,不过自从我开始学习计算机编程以来,我一直在充分利用这个网站,我一直在自学并认为这是我的一个小爱好. 我确实查找过类似的问题,但实际上我找不到我想要的答案.现在,请注意,在 Java(这是我被建议开始使用的语言)中,根据需要声明和实例化变量被认为是良好的编程习惯,请考虑以下几行: class MyClass {无效我的方法(){AnotherClass myObject = ..
发布时间:2021-12-11 19:35:38 Java开发

JavaScript 中的 new 运算符是如何工作的?

可能是 JavaScript 中最不为人知的部分,站在原型链旁边. 所以问题是:如何... new dataObj(args); ...实际上创建一个对象,并定义其原型链/构造函数等? 最好是展示一个替代方案,以完全理解这个关键字. 解决方案 new 操作符使用内部的 [[Construct]] 方法,它基本上做了以下事情: 初始化一个新的本地对象 设置此对象的内部 ..
发布时间:2021-12-11 19:10:26 前端开发

Java FileOutputStream 如果不存在则创建文件

有没有办法以一种方式使用 FileOutputStream,如果文件(字符串文件名)不存在,那么它会创建它? FileOutputStream oFile = new FileOutputStream("score.txt", false); 解决方案 如果文件不存在且无法创建(doc),但它如果可以,将创建它.为了确保您可能应该在创建 FileOutputStream 之前首先测试该文件是 ..
发布时间:2021-12-09 20:13:09 Java开发

“新"Scala 中的关键字

我有一个非常简单的问题 - 在 Scala 中创建对象时,我们应该什么时候应用 new 关键字?是在我们只尝试实例化 Java 对象时吗? 解决方案 当您想引用 class 自己的构造函数时,请使用 new 关键字: class Foo { }val f = 新的 Foo 省略 new 如果您指的是伴随对象的 apply 方法: class Foo { }对象 Foo {def ap ..
发布时间:2021-12-07 13:12:13 其他开发

在 Ruby 中,'new' 和 'initialize' 之间的关系是什么?初始化时如何返回nil?

我想要的是: obj = Foo.new(0) # =>零或假 这不起作用: class Foo定义初始化(val)如果 val == 0 则返回 nil结尾结尾 我知道在 C/C++/Java/C# 中,我们不能在构造函数中返回值. 但我想知道在 Ruby 中是否可行. 解决方案 在 Ruby 中,'new' 和 'initialize' 之间的关系是什么? ne ..
发布时间:2021-12-03 09:58:47 其他开发

将参数传递给模板化类型的 C# 泛型 new()

在添加到列表时,我试图通过其构造函数创建一个 T 类型的新对象. 我收到一个编译错误:错误信息是: 'T':创建变量实例时不能提供参数 但是我的类确实有一个构造函数参数!我怎样才能做到这一点? public static string GetAllItems(...) where T : new(){...列表tabListItems = new List();foreach( ..
发布时间:2021-12-02 13:45:54 C#/.NET

为什么使用'new'会导致内存泄漏?

我首先学习了 C#,现在我开始学习 C++.据我了解,C++ 中的运算符 new 与 C# 中的运算符不同. 您能解释一下示例代码中内存泄漏的原因吗? class A { ... };结构 B { ... };A *object1 = new A();B object2 = *(new B()); 解决方案 发生了什么 当您编写 T t; 时,您正在创建一个 T 类型的对象,自动 ..
发布时间:2021-12-01 15:42:15 C/C++开发

C++ new int[0] -- 会分配内存吗?

一个简单的测试应用: cout 输出: 0x876c0b8 所以看起来它有效.标准对此有何评论?“分配"空内存块总是合法的吗? 解决方案 来自 5.3.4/7 当 direct-new-declarator 中表达式的值为零时,调用分配函数来分配一个没有元素的数组. 来自 3.7.3.1/2 取消引用作为零大小请求返回的指针的效果未定义. 还有 即使 ..

是“删除这个"吗?在 C++ 中允许吗?

是否允许 delete this; 如果删除语句是将在类的该实例上执行的最后一条语句?当然,我确信 this 指针所代表的对象是 newly-created. 我正在考虑这样的事情: void SomeModule::doStuff(){//在控制器中,SomeModule 的“this"对象是“当前模块"//现在,如果我想切换到一个新模块,例如:控制器-> setWorkingModul ..

类型名称后面的括号与 new 有区别吗?

如果'Test'是一个普通的类,有什么区别: Test* test = new Test; 和 Test* test = new Test(); 解决方案 让我们学究,因为有些差异实际上会影响您的代码行为.以下大部分内容摘自对“旧的新事物"文章的评论. 有时new运算符返回的内存会被初始化,有时则不会,取决于你新建的类型是否为POD(纯旧数据),或者它是包含 POD 成员并使用编译 ..
发布时间:2021-12-01 14:46:37 C/C++开发

“placement new"有什么用?

这里有人用过 C++ 的“placement new"吗?如果是,是为了什么?在我看来,它只对内存映射硬件有用. 解决方案 Placement new 允许您在已分配的内存中构造一个对象. 当您需要构造一个对象的多个实例时,您可能希望这样做以进行优化,并且每次需要新实例时不重新分配内存会更快.相反,为可以容纳多个对象的内存块执行一次分配可能更有效,即使您不想一次使用所有内存也是如此. ..
发布时间:2021-12-01 14:43:01 C/C++开发

为什么 C++ 程序员应该尽量减少“new"的使用?

我偶然发现了堆栈溢出问题使用 std::list 时 std::string 的内存泄漏 和 其中一条评论是这样说的: 停止使用 new 这么多.我看不出你在任何地方使用 new 的任何理由你做到了.您可以在 C++ 中按值创建对象,它是使用该语言的巨大优势. 您不必分配堆上的一切. 不要像 Java 程序员那样思考. 我不太确定他的意思是什么. 为 ..
发布时间:2021-12-01 14:42:38 C/C++开发

新建和覆盖的区别

想知道以下之间有什么区别: 案例 1:基类 public void DoIt(); 案例一:继承类 public new void DoIt(); 案例 2:基类 public virtual void DoIt(); 案例2:继承类 public override void DoIt(); 根据我运行的测试,案例 1 和案例 2 似乎具有相同的效果.有什么区别,或者更喜欢的 ..
发布时间:2021-12-01 09:44:43 C#/.NET

JavaScript 中的“new"关键字是什么?

JavaScript 中的 new 关键字在第一次遇到时可能会很混乱,因为人们往往认为 JavaScript 不是面向对象的编程语言. 这是什么? 它解决了什么问题? 什么时候合适,什么时候不合适? 解决方案 它做了 5 件事: 它创建了一个新对象.这个对象的类型只是object. 它将这个新对象的内部、不可访问的[[prototype]](即__proto__)属性设置 ..
发布时间:2021-11-30 22:08:32 前端开发

一个图书馆迫使我对新/删除的全局过载!

我正在为一个大型闭源应用程序维护一个插件(作为 dll 实现).这多年来一直运作良好.然而,随着 SDK 的最新更新,供应商超载了全局操作符 new 和 delete.这给我带来了很多麻烦.发生的情况是我的插件分配了一个字符串.我将此字符串传递到静态链接库中,该库对其进行修改(更改其长度从而重新分配它).我的应用程序崩溃了. 原因当然是字符串存在于供应商分配的自定义堆上.静态链接库对该堆一无 ..