int = int ();c++ 98中发生了什么
int a=int(); what happens in C++98?
请仔细阅读问题,然后再标记为重复。像
这样的语句 int i=int();
大多数程序员会说这里有值初始化&i
将被值初始化。(0作为输出)。但在c++ 98编译器上也输出0。下面的程序是我在c++ 98上测试的,输出为0。
#include <iostream>
int main()
{
int i=int();
std::cout<<i;
}
不要说i是在以上c++ 98程序中初始化的值,因为值初始化是在c++ 03中引入的。那么这里i是如何初始化的呢?它真的是构造函数调用吗?Int()看起来像构造函数调用。正如Bjarne stroustrup在他的《c++编程语言&》一书中所说,c++中的基本类型也有默认构造函数。TC + + PL .
c++编程语言Bjarne stroustrup:
内置类型也有默认构造函数
也读同一本书的6.2.8节。
下面的链接还说明了在c++中内置类型有默认构造函数。
1) http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=15
http://www.geeksforgeeks.org/c-default-constructor-built-in-types/2)
那么我真的可以说它是一个整型的构造函数调用吗?
5.2.3显式类型转换(函数表示法)2表达式
T()
,其中T
是非数组完整对象类型或(可能是cv限定的)void类型的简单类型说明符(7.1.5.2),创建指定类型的右值,其值由default-initialization (8.5;void()
情况下不进行初始化)。[…]8.5初始值设定项
5[…要默认初始化类型为
T
的对象意味着:——如果
T
是非pod类类型(子句9),则默认构造函数为调用T
(如果T
没有可访问的默认构造函数,则初始化是错误的);——如果
T
是数组类型,每个元素默认初始化;——否则,对象的存储空间为零初始化。
没有问题。从第一个c++标准开始,int()
就被保证求值为零。它是通过默认初始化而不是值初始化发生的,这是一个与你的问题完全无关的技术细节。
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- 这C++代码中发生了什么C++(指数函数)
- 哪种方式更快?究竟发生了什么,我们没有看到什么?
- 我正在将一个 std::string 传递给一个 boost 函数,该函数对该类型进行常量引用,但该值发生了变化
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 从"LLONG_MAX 秒"构造 std::chrono::毫秒变量时发生了什么?
- 这个片段中关于 n 在 pc[i] 中的表示发生了什么
- istringstream,num1 和 num2 在这里发生了什么?
- 究竟发生了什么,我们需要在 c++ 中双重调度/访客
- libstdc++的make_shared布局在gcc 4.x和gcc 6.x之间是否发生了变化?
- 我是否能够确定在部署一个程序后发生了什么,我在数组末尾写入?
- 为什么我的 int 在 C++ 程序中间发生了变化?
- 这个阶乘程序内部发生了什么?
- C++ - *(int**) 地址?这里发生了什么?
- 为什么printf和cout为此无符号int提供了不同的输出
- 编译器认为 int 是一个字符串.发生了什么事情
- 当我创建一个int指针并实例化一个数组时,数组在内存中发生了什么
- 以 0 开头的 int 发生了什么变化?前 00101
- 当"int&i"是类的属性时发生了什么
- int = int ();c++ 98中发生了什么