标签: variable-initialization

C-like,构造函数和统一初始化之间有什么区别?

TTBOMK,有三种方法可以在C++中初始化变量.

int x = 0;    // C-like initialization
int x (0);    // Constructor initialization
int x {0};    // Uniform initialization
Run Code Online (Sandbox Code Playgroud)

C++ 11引入了统一初始化,以便为初始化不同类型的变量提供更加统一的语法,这需要在C++ 03中使用不同的语法.

C-like,构造函数和统一初始化之间有什么区别?我应该总是使用统一初始化吗?

c++ initialization variable-initialization c++11 c++03

52
推荐指数
2
解决办法
7660
查看次数

在构造函数初始化列表中调用函数是否可以?

我的直觉是不是.我遇到以下情况:

class PluginLoader
{
   public:
      Builder* const p_Builder;
      Logger* const p_Logger;

      //Others
};

PluginLoader::PluginLoader(Builder* const pBuilder)
   :p_Builder(pBuilder), p_Logger(pBuilder->GetLogger())
{
   //Stuff
}
Run Code Online (Sandbox Code Playgroud)

或者我应该更改构造函数并Logger* const从构造的位置传递一个PluginLoader

c++ constructor variable-initialization

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

在ScheduledExecutorService中运行的任务本身内停止定期任务

在ScheduledExecutorService中运行时,是否有一种很好的方法可以阻止任务内部重复任务?

可以说,我有以下任务:

Future<?> f = scheduledExecutor.scheduleAtFixedRate(new Runnable() {
    int count = 0;
    public void run() {
       System.out.println(count++);
       if (count == 10) {
           // ??? cancel self
       }
    }
}, 1, 1, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

从外面看,很容易通过f.cancel()取消,但是如何在指定的地方停止重复?(通过AtomicReference传递Future是不安全的,因为当scheduleAtFixedRate返回f迟到且变量设置得太晚时,有一个潜在的窗口,并且任务本身可能已经运行,在引用中看到null.)

java concurrency anonymous-class executorservice variable-initialization

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

这怎么可能在c ++中使用?

  1. 令我惊讶的是,我发现c ++对象的名称可以与类名相同.有人可以向我解释原因吗?
  2. 当我宣布类的对象aa a1(),它不会引发错误,但不会调用构造函数.为什么会这样?

我的代码:

#include<iostream>
using namespace std;

class a 
{
    public:
    a() 
    {
        cout << "in a\n";
    }
};

int main()
{
    a a1();
    a a;
}
Run Code Online (Sandbox Code Playgroud)

c++ class variable-initialization function-declaration

17
推荐指数
2
解决办法
1555
查看次数

初始化类变量的更好方法是什么?

这是初始化类变量的两种方法.

第一种方法

class Test {
    private $var1;
    private $var2;

    public function Test($var1,$var1) {
        $this->var1 = $var1;
        $this->var2 = $var2;
    }
}
$objTest = new Test("value1","value2");
Run Code Online (Sandbox Code Playgroud)

第二种方法

class Test {
    private $var1;
    private $var2;

    public function _set($var, $value) {
        $this->$$var = $value
    }
}
$objTest = new Test();
$objTest->_set('var1','value1');
$objTest->_set('var2','value2');
Run Code Online (Sandbox Code Playgroud)

现在,这两种方法都是有效的,但我想知道哪种方法更好?只坚持一种方法的利弊是什么?

php class variable-initialization

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

Java字符串初始化

你更喜欢哪个?为什么"

String myString = null;
if(someCondition)
   myString = "something";
else
   myString = "something else";
Run Code Online (Sandbox Code Playgroud)

要么

String myString = "";
if(someCondition)
   myString = "something";
else
   myString = "something else";
Run Code Online (Sandbox Code Playgroud)

我知道使用三元(?:)运算符是可能的,但我想知道上面两个.

java conditional preferences variable-initialization

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

应该在调用函数之前初始化变量吗?

当我调用函数来获取值时,我通常初始化varible,以防函数失败或不返回任何内容,我想避免处理未初始化的变量.我对字符串,整数或任何其他类型都这样做.

整数变量的示例:

vPropValue := 0;
vPropValue := GetPropValue(vObject,'Height');

IF vPropValue > 0 Then
...
Run Code Online (Sandbox Code Playgroud)

这是我最常用的方式.

我知道我可以使用:

If GetPropValue(vObject,'Height') > 0 Then
...
Run Code Online (Sandbox Code Playgroud)

但是在第一个例子中,我避免多次调用函数,如果我稍后需要在代码中再次得到结果.

对于字符串也是一样的(即使我知道本地字符串被初始化为空字符串,而整数不是可以保存任何值)

vName := '';
vName := GetObjectName(vObject,'ObjectName');

IF Trim(vPropStrValue) <> '' Then
...
Run Code Online (Sandbox Code Playgroud)

我知道我可以采取措施避免重复的值赋值,比如确保函数在所有内容都失败时返回0.但是我有100多个函数而且我不能依赖我从来没有弄错过函数如何处理所有事情而且我确定有些人不会返回0,如果一切都失败了.

我试图理解为什么这不是理想的做法以及如何最好地避免它.

编辑

以下是函数未返回正确值或0的示例:

function GetValue(vType:integer):integer;
begin
   if vType=1 then
    Result:=100
   else if (vType>2) and (vType<=9) then
     Result:=200;

end;

procedure TForm1.Button1Click(Sender: TObject);
var vValue:integer;
begin

  vValue:=GetValue(11);
  Button1.Caption:=IntToStr(vValue);

end;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,函数返回的值是一些随机数.

在这种情况下,初始化似乎是有效的方法.或不?

编辑2:

正如大卫在他的回答中指出的那样,正确的是,有一个警告

[dcc32 Warning] Unit1.pas(33): W1035 Return value of function 'GetValue' might be …
Run Code Online (Sandbox Code Playgroud)

delphi variable-initialization delphi-xe7

11
推荐指数
1
解决办法
465
查看次数

C:无法使用void*类型的右值初始化变量

我有以下代码:

int *numberArray = calloc(n, sizeof(int));
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么会收到以下错误.

Cannot initialize a variable of type 'int *' with an rvalue of type 'void *'`.
Run Code Online (Sandbox Code Playgroud)

谢谢.

c pointers variable-initialization

9
推荐指数
1
解决办法
5万
查看次数

声明与初始化变量?

我很想知道声明变量和初始化变量之间的区别.例如

var example; // this is declaring

var example = "hi" // initializing? Or just "adding a value"?
Run Code Online (Sandbox Code Playgroud)

我不认为我就在那里,但每个人的定义究竟是什么?或者他们基本上是同一个意思?

javascript variable-initialization variable-declaration

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

为什么必须在Java中将变量初始化为默认值

在一篇关于如何在Java中初始化对象的文章中,有一段如下:

在对象生命的开始,Java虚拟机(JVM)在堆上分配足够的内存以容纳对象的实例变量.但是,首次分配该内存时,它包含的数据是不可预测的.如果按原样使用内存,则对象的行为也是不可预测的.为了防范这种情况,Java确保在任何代码使用内存之前初始化内存,至少是可预测的默认值.

任何人都可以解释这是什么意思unpredictable dataunpredictable behavior在这里.提前致谢

java default-value variable-initialization

7
推荐指数
1
解决办法
1539
查看次数