标签: new-operator

在ruby中调用父构造函数

我该如何调用父母构造函数?

module C
    attr_accessor :c, :cc
    def initialization c, cc
        @c, @cc = c, cc
    end 
end

class B
    attr_accessor :b, :bb
    def initialization b, bb
        @b, @bb = b, bb
    end 
end


class A < B
    include C
    attr_accessor :a, :aa
    def initialization (a, b, c, aa, bb, cc)
        #call B::initialization - ?
        #call C::initialization - ?
        @a, @aa = a, aa
    end
end
Run Code Online (Sandbox Code Playgroud)

谢谢.

ruby oop constructor initialization new-operator

27
推荐指数
4
解决办法
3万
查看次数

函数和新函数之间的JavaScript差异

以下JavaScript代码对我来说非常混乱.任何人都可以帮助我理解.为什么PersonY没有原型属性.

PersonX = function(){};
PersonY = new function(){};
alert(PersonX.prototype);
alert(PersonY.prototype);    
?
Run Code Online (Sandbox Code Playgroud)

javascript new-operator

26
推荐指数
1
解决办法
7174
查看次数

Visual Studio 2019无法正确处理结构的动态数组的聚合初始化

如果使用VC ++ 2017编译,下面的代码将显示垃圾(或零),如果使用GCC或Clang(https://rextester.com/JEV81255)进行编译,则以下代码将显示“ 1122” 。是VC ++的bug还是我在这里遗漏了一些东西?

#include <iostream>

struct Item {
    int id;
    int type;
};

int main()
{
    auto items = new Item[2]
    {
        { 1, 1 },
        { 2, 2 }
    };

    std::cout << items[0].id << items[0].type;
    std::cout << items[1].id << items[1].type;
}
Run Code Online (Sandbox Code Playgroud)

同时,如果元素属于原始类型(例如int),则也可以使用。

c++ new-operator visual-c++ compiler-bug aggregate-initialization

26
推荐指数
1
解决办法
354
查看次数

对C#中的"覆盖"与"新"感到困惑

我有以下课程:

class Base
{
    public virtual void Print()
    {
        Console.WriteLine("Base");
    }
}

class Der1 : Base
{
    public new virtual void Print()
    {
        Console.WriteLine("Der1");
    }
}

class Der2 : Der1
{
    public override void Print()
    {
        Console.WriteLine("Der2");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的主要方法:

Base b = new Der2();
Der1 d1 = new Der2();
Der2 d2 = new Der2();

b.Print();
d1.Print();
d2.Print();
Run Code Online (Sandbox Code Playgroud)

输出是Base,Der2,Der2.

据我所知,即使指针指向它们,Override也不会让以前的方法运行.所以第一行也应该输出Der2.然而Base出来了.

这怎么可能?覆盖如何在那里不起作用?

c# virtual overriding new-operator

25
推荐指数
2
解决办法
9985
查看次数

在Java中不使用'new'关键字来声明数组

以下两个声明之间有什么区别吗?

int arr[] = new int [5];
Run Code Online (Sandbox Code Playgroud)

int arr1[] = {1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

arr1在堆栈上还是在堆上声明?

java arrays new-operator

25
推荐指数
3
解决办法
9755
查看次数

Ubuntu 22.04 缺少设置菜单

所以我试图找回 ubutu 升级到 22.04 版本后消失的菜单设置。

老实说,我对这一切都是新手。这是我得到的代码:

我尝试:

root@blast-ThinkPad-T430:/home/blast# apt-get install gnome-control-center

我得到:

Could not find platform independent libraries <prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = (not set)
  program name = '/usr/bin/python3'
  isolated = 0
  environment = 1
  user site = 1
  import site = 1
  sys._base_executable = '/usr/bin/python3'
  sys.base_prefix = '/usr'
  sys.base_exec_prefix = '/usr'
  sys.platlibdir = 'lib'
  sys.executable = '/usr/bin/python3'
  sys.prefix = '/usr'
  sys.exec_prefix = '/usr'
  sys.path = [
    '/usr/lib/python310.zip',
    '/usr/lib/python3.10',
    '/usr/lib/python3.10/lib-dynload', …
Run Code Online (Sandbox Code Playgroud)

ubuntu settings menu new-operator ubuntu-22.04

25
推荐指数
2
解决办法
2万
查看次数

调用析构函数然后构造函数(重置对象)

我想重置一个对象.我可以通过以下方式进行吗?

anObject->~AnObject();
anObject = new(anObject) AnObject();
// edit: this is not allowed: anObject->AnObject();
Run Code Online (Sandbox Code Playgroud)

此代码显然是在placement new中分配的对象的典型生命周期的子集:

AnObject* anObject = malloc(sizeof(AnObject));
anObject = new (anObject) AnObject(); // My step 2.
// ...
anObject->~AnObject(); // My step 1.
free(anObject)
// EDIT: The fact I used malloc instead of new doesn't carry any meaning
Run Code Online (Sandbox Code Playgroud)

唯一改变的是构造函数和析构函数调用的顺序.

那么,为什么在以下常见问题解答中 出现所有威胁呢?

[11.9]但是如果我用new分配了我的对象,我可以显式调用析构函数吗?

常见问题解答:除非对象分配了新的展示位置,否则您不能.必须删除new创建的对象,它会做两件事(记住它们):调用析构函数,然后释放内存.

FQA:翻译:删除是一种明确调用析构函数的方法,但它也会释放内存.您也可以在不释放内存的情况下调用析构函数.在大多数情况下它很丑陋而且无用,但你可以做到这一点.

析构函数/构造函数调用显然是普通的C++代码.代码中使用的保证直接来自放置新保证.它是标准的核心,它坚如磐石.它怎么称为"脏"并被表现为不可靠的东西?

您是否认为新的插入式和非插入式实施是不同的?我正在考虑一些病态的可能性,例如,常规的新的可以放置在块之前分配的内存块的大小,其中放置新的显然不会这样做(因为它不分配任何内存).这可能会导致某些问题出现间隙...... 这样的新()实现是否可行?

c++ memory-management new-operator

24
推荐指数
6
解决办法
1万
查看次数

在C#中的界面内使用时,'new'关键字的含义是什么?

开发一个通用的接口我希望在一个接口中声明一个构造函数,但它说那里禁止构造函数.我试图声明一个静态工厂方法,但它说不允许使用静态方法,并建议使用'new'关键字.但我几乎不知道在C#中使用界面时,'new'关键字究竟意味着什么.你呢?

更新:

我没有发布任何示例代码,因为我不想混合2个问题 - 如何在界面中指定构造函数/工厂以及'new'关键字在接口中的含义.II甚至只被强制指定第一部分因为StackOverflow不接受纯粹形式的第二个问题,说它不符合质量标准.

但是,正如你所要求的那样,我将对我试图实现的目标进行抽样:

Interface IMyInterface <T, U, V>
{
    IMyInterface (T, U, U);
    // OR
    static IMyInterface GetNewIMyInterface (T, U, U);
}
Run Code Online (Sandbox Code Playgroud)

我只是希望每个派生类都实现这样的构造函数.

.net c# interface new-operator

24
推荐指数
4
解决办法
1万
查看次数

使用new运算符初始化数组

我想以一种格式初始化一个数组,该格式使用逗号分隔花括号中包围的元素,例如:

int array[10]={1,2,3,4,5,6,7,8,9,10};
Run Code Online (Sandbox Code Playgroud)

但是,我需要使用new运算符来分配内存,例如:

int *array = new int[10];
Run Code Online (Sandbox Code Playgroud)

有没有办法结合这些方法,以便我可以使用new运算符分配内存并使用花括号初始化数组?

c++ arrays new-operator

24
推荐指数
2
解决办法
6万
查看次数

在类构造函数中设置std :: vector

我正在设计一个具有std::vector<int>实例变量的类.我正在使用a,std::vector因为我需要在运行时设置它的大小.以下是我的代码的相关部分:

my_class.h:

#include <vector>
using std::vector;
class MyClass {
    int size;
    vector<int> vec;
}

my_class.cc:

#include "my_class.h"
using std::vector
MyClass::MyClass(int m_size) : size(m_size) {
     vec = new vector<int>(size,0);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我收到以下错误消息:

g++ -c -Wall my_class.cc -o my_class.o

my_class.cc: In constructor ‘MyClass::MyClass(int):

  my_class.cc:4 error: no match for ‘operator=’ in ‘((MyClass*)this)->My_Class::vec = ((*(const allocator_type*)(& std::allocator<int>())), (operator new(24u), (<statement>, ((std::vector<int>*)<anonymous>))))’

make: *** [my_class.o] Error 1
Run Code Online (Sandbox Code Playgroud)

但是,当我将违规行更改为:

vector<int> temp(size,0);
vec = temp;
Run Code Online (Sandbox Code Playgroud)

它现在编译没有故障,我得到了所需的行为,并可以访问我的矢量

vec[i]  // i having been defined as an …
Run Code Online (Sandbox Code Playgroud)

c++ constructor new-operator stdvector

24
推荐指数
2
解决办法
7万
查看次数