奇怪的QString初始化为0 - 它做什么?

时间:2017-05-15 14:13:41

标签: c++ qt

很抱歉,但我无法在C ++手册中找到合适的位置。

在以下字符串中:

void setYRange(QString name1, int s1, int e1, QString name2 = 0, int s2 = 0, int e2 = 0);

我不明白初始化:

QString name2 = 0
  • 如果是字符串,为什么用整数初始化?
  • 如果是对象引用,为什么不用NULL初始化?
  • 如果它创建一个对象并用0字节填充它,它如何知道要分配多少字节?

请在C ++手册中给我一个正确位置的参考。

1 个答案:

答案 0 :(得分:2)

您所看到的是编译器选择QString::QString(const QChar *unicode, int size = -1)构造函数。 0是空指针值,因此可以从中隐式构造指针。这意味着编译器将选择c-string构造函数并将指针初始化为空指针。由于指针为空,这意味着您将构造一个空QString(它为空)。

请注意,此行为与std::string不同。从空指针构造其中一个是未定义的行为。