问题描述
- 在C++中,int();这么一行代码表达什么意思?
-
无意中发现的问题,简化了一下,以下代码C++是可以编译运行的,没发现有任何作用。stopStreamCBFun是数据类型,代码中当成函数运行竟然也能正常工作。我又加了一行int();也可以编译运行,当然实际上不管加几行这种代码,用gdb运行b main后总是会跳过这些代码,直接跳到下一行return 0; 也就是说这些代码其实是无效的,这个问题本身没什么用,我只是好奇为什么这样的代码编译能通过,类似的代码在C里面是会提示出错的。欢迎大家讨论。#include
using namespace std;typedef int (*stopStreamCBFun)();
int main()
{
stopStreamCBFun();
int();
return 0;
}
解决方案
在C++中int(a)是将a装换为int型,int()应该是没什么用,是不是就起到一个占位作用,以后要完善。
解决方案二:
根据我的理解,C++中是支持创建对象的,此处就相当于使用Int()创建了一个基本的整型对象Int,然而并没有为其命名,没有其变量名也就无法操作这里的内存。
于是,此处的开辟内存便丢失了,这行代码尽管是合法的,但是没有实际意义,而在C中,是没有对象概念的,C中只有函数,表达式,C编译器此时认为Int()是一个函数,而此处并没有定义以及声明相关的Int()函数,所以就会报错了。这就是我的理解,事实可能并不是这样,还望大家指正。
解决方案三:
真有人写这么奇怪的代码啊
解决方案四:
INT(number)Number 需要进行向下舍入取整的实数。int()为取整函数。
解决方案五:
int(); 编译器会认为他是一个int类型的未初始化的无名对象,因为c++中一切皆对象嘛。比如说A是一个类, 那么 A(); 则代表一个A类型的无名对象,
你创建对象不用他,编译器怎么会报错呢?
解决方案六:
C我没研究过,不过在C++里面我的理解是,类名()形式的语句是调用构造函数创建一个新的对象,虽然我们写构造函数的时候并没有写过返回值,但是我觉得它是有返回值得他返回创建出来的对象,只不过返回的过程被底层代管了,所以我们有时候会写这样的语句: CTest lctest = CTest();想像一下普通的函数调用,,根据需求我们通常会忽略函数返回值,即没有声明一个变量去容纳其返回值,其形式正好与这一句类似,我觉得其中原理相同
时间: 2024-11-03 20:50:29