相关疑难解决方法(0)

使用new(c ++)在构造函数调用中不使用括号

可能重复:
类型名称后的括号是否与new有所不同?

所以我在我的主要:

Class* pC = new Class;
Run Code Online (Sandbox Code Playgroud)

它的工作原理是

Class* pC = new Class();
Run Code Online (Sandbox Code Playgroud)

我今天才意识到我省略了括号(所以我在某种程度上被最令人烦恼的解析的"对立"所击中).

我的问题:这两种形式是否相同?

c++ parsing constructor new-operator

20
推荐指数
1
解决办法
6785
查看次数

调用默认构造函数

class base {
    int i;
public:
    base()
    {
        i = 10;
        cout << "in the constructor" << endl;
    }
};

int main()
{
    base a;// here is the point of doubt
    getch();
}
Run Code Online (Sandbox Code Playgroud)

base a 和之间有什么区别base a()

在第一种情况下,构造函数被调用但不是在第二种情况下!

c++

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

使用()或不创建对象之间的区别

我刚遇到这个问题

error: request for member ‘show’ in ‘myWindow’, which is of non-class type ‘MainGUIWindow()’
Run Code Online (Sandbox Code Playgroud)

当试图编译一个简单的qt应用程序时:

#include <QApplication>
#include "gui/MainGUIWindow.h"


int main( int argc, char** argv )
{
  QApplication app( argc, argv );


  MainGUIWindow myWindow();
  myWindow.show();


  return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我通过替换解决了这个问题

MainGUIWindow myWindow(); 
Run Code Online (Sandbox Code Playgroud)

通过

MainGUIWindow myWindow;
Run Code Online (Sandbox Code Playgroud)

但我不明白其中的区别.我的问题:有什么区别?

此致,德克

c++ qt most-vexing-parse

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

什么'值初始化'是什么意思?

可能重复:
C++中的以下短语是什么意思:零,默认和值初始化?

如果我有一个班级,例如:

class Info
{
   int x;
   int y;
};
Run Code Online (Sandbox Code Playgroud)

我曾经创建过一个对象,

Info *p = new Info();
Run Code Online (Sandbox Code Playgroud)

Info旁边的括号是否意味着我正在初始化它?它与此Info *p = new Info;有何不同?

我知道有一个问题可以区分新旧C++语言中的不同含义,但我想知道默认值和值初始化之间的语义差异,例如,值初始化是否意味着将某些内容初始化为零?

c++ default-value value-initialization

18
推荐指数
1
解决办法
8501
查看次数

我是否必须初始化简单的类成员变量?

快速初学者的问题:

是否必须初始化简单的类成员变量,或者它们是否保证在任何情况下都被赋予默认值?

例:

class Foo {
  int i;
  // is i==0 or do I need the following line for that?
  Foo() : i(0) {}
};
Run Code Online (Sandbox Code Playgroud)

谢谢!

c++ variables initialization class

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

值初始化和非POD类型

一个小时前我在这里发了一个答案,根据我的说法是正确的.然而我的回答却被Martin B贬低了.他说

你很幸运,并且因为我所处的内存恰好是零初始化而得到了零.标准不保证这一点.

然而读迈克尔·伯尔的回答后,这里并尝试下面的示例代码

1)

#include <cassert>

struct B { ~B(); int m; };

int main()
{
   B * b = new B();
   assert(b->m == 0);
}
Run Code Online (Sandbox Code Playgroud)

我在MSVC++ 2010上遇到调试错误.

我有一个类似的错误,当我尝试下面的代码[我的答案在这里 ]在MSVC++ 2010

2)

#include <cassert>
struct Struct {
    std::string String;
    int Int;
    bool k;
    // add add add
};

struct InStruct : Struct
{
   InStruct() : Struct() {}
};

int main()
{
   InStruct i;
   assert(i.k == 0);
}
Run Code Online (Sandbox Code Playgroud)

既没有(1)也没有(2)给gcc/Clang这样的错误让我想到MSVC++ …

c++ initialization visual-c++ value-initialization

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

什么时候C++ POD类型被零初始化?

来自C背景,我一直认为POD类型(例如整数)从未在C++中自动进行零初始化,但似乎这是完全错误的!

我的理解是,只有'裸'非静态POD值不会被填零,如代码片段所示.我做对了,还有其他重要的案例我错过了吗?

static int a;

struct Foo { int a;};

void test()
{
  int b;     
  Foo f;
  int *c = new(int); 
  std::vector<int> d(1);

  // At this point...
  // a is zero
  // f.a is zero
  // *c is zero
  // d[0] is zero
  // ... BUT ... b is undefined     
}  
Run Code Online (Sandbox Code Playgroud)

c++ constructor initialization

15
推荐指数
1
解决办法
4876
查看次数

default-initialize和value-initialize之间的区别?

可能重复:
C++中的以下短语是什么意思:零,默认和值初始化?

我正在读这个答案,所以我遇到了第二个字:value-initialize.最初我认为这是相同的,default-initialize但上下文暗示我错了.

所以我的问题是:

default-initializevalue-initialize有什么区别?

我想了解一些例子的不同之处.

c++ initialization

14
推荐指数
2
解决办法
5911
查看次数

"new int [5] {};"中"{}"的目的是什么?

如果我们写下这样的话:

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

在这种情况下,系统为5个类型的元素动态分配空间,int并返回指向序列的第一个元素的指针.

但是,一旦我看到以下代码:

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

那么,运营商{}之后的意义new何在?{}这段代码的目的是什么?

我用自己的值初始化了数组,如下所示:

#include <iostream>

int main()
{
    int* a = new int[5]{1};
    for(int i = 0; i < 5; i++)
        std::cout<< a[i]<<' ';

    delete[] a;
}
Run Code Online (Sandbox Code Playgroud)

输出:

1 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

只有第一个元素打印1.为什么?

c++ initialization new-operator dynamic-memory-allocation c++11

14
推荐指数
1
解决办法
1313
查看次数

指针问题是c ++中的"new"运算符

愚蠢的问题,但每当你打电话给新的时,你总是有指针吗?

SomeClass *person = new SomeClass();
Run Code Online (Sandbox Code Playgroud)

那是因为你需要一个指向指向为SomeClass变量人分配的新内存空间的指针吗?谢谢!

c++ pointers

12
推荐指数
1
解决办法
6294
查看次数