相关疑难解决方法(0)

复制初始化和直接初始化之间有区别吗?

假设我有这个功能:

void my_test()
{
    A a1 = A_factory_func();
    A a2(A_factory_func());

    double b1 = 0.5;
    double b2(0.5);

    A c1;
    A c2 = A();
    A c3(A());
}
Run Code Online (Sandbox Code Playgroud)

在每个分组中,这些陈述是否相同?或者在某些初始化中是否有额外的(可能是可优化的)副本?

我见过有人说过这两件事.请引用文字作为证据.还请添加其他案例.

c++ initialization

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

如何在c ++中使用默认构造函数初始化变量

给出教程中的以下函数模板.

template<class T>
double GetAverage(T tArray[], int nElements)
{
    T tSum = T(); // tSum = 0

    for (int nIndex = 0; nIndex < nElements; ++nIndex)
    {
        tSum += tArray[nIndex];
    }

    // Whatever type of T is, convert to double
    return double(tSum) / nElements;
}
Run Code Online (Sandbox Code Playgroud)

在线

T tSum = T(); // tSum = 0
Run Code Online (Sandbox Code Playgroud)

他们说它将调用特定类型的默认构造函数(基于我们称之为此函数的类型).我怀疑这个调​​用是如何将值赋给tSum的,因为这会调用构造函数.但由于构造函数不返回任何内容,iSum如何初始化为0表示int或0.0表示double.

c++ templates

5
推荐指数
2
解决办法
1101
查看次数

int var = 1; void main(){int i = i; }

这是我的面试问题:

int var = 1;
void main()
{
    int i = i;
}
Run Code Online (Sandbox Code Playgroud)

i分配后的价值是多少?它真的是编译器依赖的还是仅仅是未定义的?我在cygwin上的g ++似乎总是给我0.

谢谢

c++

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

标签 统计

c++ ×3

initialization ×1

templates ×1