Tag: 初始化

GCC中的函数静态variables是否是线程安全的?

在示例代码中 void foo() { static Bar b; … } 使用GCC编译是保证b将被创build和线程安全的方式初始化? 在gcc的手册页中,find了-fno-threadsafe-statics命令行选项: 不要发出额外的代码来使用C ++ ABI中指定的用于本地静态线程安全初始化的例程。 您可以使用此选项在不需要线程安全的代码中稍微减less代码大小。 这是否意味着,本地静态在GCC默认情况下是线程安全的? 那么没有理由明确地捍卫,例如与pthread_mutex_lock/unlock ? 如何编写可移植代码 – 如何检查编译器是否会添加其警卫? 还是closuresGCC的这个function更好?

声明int的数组

这两个声明有什么区别? int x[10]; 与 int* x = new int[10]; 我想前面的声明(就像后面的声明)是一个指针声明,两个variables都可以被视为相同的。 这是否意味着它们本质上是一样的?

在python中设置字典的属性

是否有可能从一个字典在Python中创build一个对象,使每个键是该对象的属性? 像这样的东西: d = { 'name': 'Oscar', 'lastName': 'Reyes', 'age':32 } e = Employee(d) print e.name # Oscar print e.age + 10 # 42 我认为这几乎是这个问题的反面: 来自对象字段的Python字典

使用__init__.py

我很难理解python的__init__.py文件在我的项目中的使用场景或devise目标。 假设我有'模型'目录(引用为一个包),其中包含以下文件 __init__.py meta.py solrmodel.py mongomodel.py samodel.py 我find了两种使用__init__.py : 我有一个共同的定义,需要在solrmodel.py , mongomodel.py , samodel.py 。 我可以使用__init__.py作为所有* model.py类的基本/通用定义吗? 这意味着我必须导入model/__init__.py 。 或者, __init__.py init__.py应该自己导入solrmodel.py,mongomodel.py,samodel.py的定义,并且允许像这样轻松导入类或函数: # file: __init__.py from mongomodel import * from solrmodel import * from samodel import * (我知道,不推荐import * ,我只是用它作为约定) 我无法决定以上两种情况。 __init__.py有更多的使用场景,你能解释一下使用情况吗?

未初始化的对象vs对象初始化为NULL

我正在使用Java。 我通常设置一些对象如下: public class Foo { private SomeObject someName; // do stuff public void someMethod() { if (this.someName != null) { // do some stuff } } } 问题是:在这个例子中的someName等于null ,因为我可以reliably for all objects假设空检查未初始化的对象将是准确的?

我写了一个程序,允许两个class级“打架”。 无论出于何种原因,C#总是赢。 VB.NET出了什么问题?

我写了一个程序,允许两个class级“打架”。 无论出于何种原因,C#总是赢。 VB.NET出了什么问题? static void Main(string[] args) { Player a = new A(); Player b = new B(); if (a.Power > b.Power) Console.WriteLine("C# won"); else if (a.Power < b.Power) Console.WriteLine("VB won"); else Console.WriteLine("Tie"); } 这里是玩家:C#中的玩家A: public class A : Player { private int desiredPower = 100; public override int GetPower { get { return desiredPower; […]

为什么Swift初始化器不能在它们的超类中调用便捷初始化器?

考虑这两个类: class A { var x: Int init(x: Int) { self.x = x } convenience init() { self.init(x: 0) } } class B: A { init() { super.init() // Error: Must call a designated initializer of the superclass 'A' } } 我不明白为什么这是不允许的。 最终,每个类的指定初始化器都被调用了它们需要的任何值,那么为什么我需要在B的init再次指定一个默认值来重复自己呢?

我怎样才能公开默认的成员在斯威夫特的结构初始化?

我有一个定义结构的swift框架: public struct CollectionTO { var index: Order var title: String var description: String } 但是,我似乎无法使用从导入库的另一个项目隐式成员明智的初始值设定项。 错误是'CollectionTO'无法初始化,因为它没有可访问的初始化程序。 即它没有给默认隐式成员明智的初始化公开关键字。 var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases") 我不得不添加我自己的init方法,如下所示: public struct CollectionTO { var index: Order var title: String var description: String public init(index: Order, title: String, description: String) { self.index = […]

C char数组的初始化

我不确定在初始化之后char数组中有什么会以下面的方式。 1. char buf[10] = ""; 2. char buf[10] = " "; 3. char buf[10] = "a"; 对于情况2,我认为buf[0]应该是' ' , buf[1]应该是'\0' ,并且从buf[2]到buf[9]将是随机内容。 对于案例3,我认为buf[0]应该是'a' , buf[1]应该是'\ 0',并且从buf[2]到buf[9]将是随机内容。 那是对的吗? 而对于案例1, buf将会是什么? buf[0] == '\0'和从buf[1]到buf[9]将是随机内容吗?

在C ++的类初始化器中初始化一个常量数组

我在C ++中有以下类: class a { const int b[2]; // other stuff follows // and here's the constructor a(void); } 问题是,如何初始化初始化列表中的b,因为我不能在构造函数的主体中初始化它,因为b是const ? 这不起作用: a::a(void) : b([2,3]) { // other initialization stuff } 编辑:在这种情况下,我可以有不同的值为b不同的实例,但值已知是实例的生命周期不变。