变量名后面的空括号

《Zephyr OS 入门与实战》第15章:LoRaWAN 集成 【代码】《Zephyr OS 入门与实战》第15章:LoRaWAN 集成。 阅读详情

今天随便地在群里提了一个简单的问题:一个拥有默认构造函数的类,当在栈上构造该类的一个实例时,变量名后面需不需要加一对空括号?

得到的答案有三种:

  1. 不需要、也不能加空括号
  2. 要加空括号
  3. 可加可不加,效果一样

很明显,只有第1种答案是正确的。如果紧接着追问下去:如果加了空括号,会有什么后果?编译器是报一个错误还是让它顺利通过编译?

一些人认为加了空括号是语法错误,其实单就语法上讲,加了空括号并没有错误,这是一条完全符合语法的语句:

001    class Foo {
002    public:
003        void execute();
004    };
005    ...
006    void Bar() {
007        Foo f1;         //在栈上构造一个Foo对象的实例,名为f1
008        Foo f2();       //完全正确的语法:声明一个函数原型,它没有参数,并且返回一个Foo的实例
009        f1.execute();
010        f2.execute();   //编译错误

上面这段示例代码,第7行是正确的“在栈上构造Foo类的一个实例”语法,而第8行的意思却完全变了,尽管它的语法并没有问题,如果没有后面的第010句,那么编译器会仅仅给出一个警告,它认为你声明了一个函数原型,但没有使用这个函数,并且会比如智能地猜测你是否是想构造一个对象实例但错误地加了空括号;如果有第010句,则编译器会在010句上报一个编译错误,原因很明显:f2只是一个函数名,而不是类、结构或联合(的实例)。

SAP B1中文培訓教材_SDK 公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说 立即下载

相关推荐

Windows版MySQL8.4.2LTS解压直用(下载免安装-绿色-项目打包直接使用-含卸载)

安装前运行微软常用运行库全集(也可能称为依赖)关于MySQL8中相关参数配置,可通过。选择8.5.2LTS长期服务版。选中密码,右键会直接复制。

xzzteach的博客 1440

C语言中变量名加括号,为什么在声明变量时C ++允许我们在括号内将变量名括起来?...

弑天下通常允许在此类声明中使用括号,因为从语法的角度来看,声明总是像这样:;例如,在以下声明中:int*p[2];“ front type”是int(不是int*),“ specification”是* p[2]。规则是,您可以根据需要在“规格”部分中使用任意数量的括号,因为有时不可避免地要消除歧义。例如:int*p[2];//arrayof2pointerstoint;sa...

weixin_34268604的博客 2220

新手必看|HDevelop核心算子快速上手,为C#移植打基础

在上一篇文章中,我们完成了C#+HALCON的开发环境搭建。但在实际工业开发中,绝不会直接在C#中编写视觉算法HDevelop可视化调试算法 → 验证效果 → 导出C#代码 → 集成到上位机。HDevelop是HALCON专属的算法调试工具,支持实时预览图像、参数动态调节、零编译运行,是新手入门和工业算法调试的核心工具。本文聚焦工业场景高频使用的核心算子,从基础操作到实战案例,手把手教你使用HDevelop;同时重点讲解算法导出C#的规范,让你调试完成的算法,能无缝移植到WinForm上位机中。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 778

C语言的变量作用域

C语言的变量作用域及头文件 关于C语言的变量作用域和头文件的问题都是比较基础的问题,但是这些问题在实际使用过程中的概念不清和混乱会对一个多文件的项目的组织结构及文件结构造成很大的影响,使得项目本身的脉络也变的很模糊。 1、作用域       关于C语言的变量作用域和头文件的问题都是比较基础的问题,但是这些问题在实际使用过程中的概念不清和混乱会对一个多文件的项目的组织结构及文件结构造成

lanhaics的专栏 1923

团子杂记:SAP收入确认工具RAR(Revenue Recognition&Reporting)在新收入准则下的应用

SAP收入确认工具RAR知识分享

Lucas1211的博客 4284

UE5 Decal混合进阶:如何用DBuffer实现自定义Normal插值(附完整材质配置流程)

本文深入解析了UE5中利用DBuffer技术实现Decal自定义Normal插值的完整流程。通过详细的材质配置步骤和核心算法说明,帮助开发者突破传统混合模式限制,掌握高级法线控制技巧,特别适合需要精细环境细节的3A级项目开发。

table的专栏 224

C语言遇空字符缩进,C语言的缩进和空白

C语言的缩进和空白使用原则一般编码缩进规则1.字if、while、for与其后的控制表达式的(括号之间插入一个空格分隔,但括号内的表达式应紧贴括号例如while (1)2.双目运算符的两侧各插入一个空格分隔,单目运算符和操作数之间不加空格例如:i␣=␣i␣+␣1、++i、!(i␣3.后缀运算符和操作数之间也不加空格例如:取结构体成员s.a、函数调用foo(arg1)、取数组成员a[i],号和;号之...

weixin_42307478的博客 1004

人形机器人骨骼材料选型实战:从铝合金到碳纤维的5种方案对比

本文深入探讨人形机器人骨骼材料的选型策略,对比铝合金、镁合金、钛合金、碳纤维复合材料及3D打印材料等5种方案的性能优劣。通过建立强度-重量比、疲劳寿命等核心评价维度,结合具体应用场景,提供科学的材料决策方法论,助力开发者优化机器人结构设计,实现性能与成本的平衡。

weixin_29199873的博客 439

C语言复习(2)——语句

C语言复习(2)——语句 2.1 空语句 ; C中最简单的语句,本身只包含一个分号。空语句不执行任何任务,但仍有作用。适用的场合便是语法要求出现一条完整语句,但并不需要它执行任何任务。 2.2 表达式语句 C不存在专门的“赋值语句”,赋值就是一种操作,就像加法和减法一样,赋值利用“=”运算符在表达式中进行。在表达式尾部加上分号,就转化为语句,下面的表达式 x=y+3; ch=getchar(); 实际上是表达式语句,而非赋值语句。理解这点非常重要,因为下面的语句也是合法的: y+3; getchar(

qq_43041053的博客 651

《备考系统分析师》 - 专栏介绍和目录

本专栏提供软考高级系统分析师全套备考资料,包含四大核心内容:1.详细考点梳理(覆盖基础知识、关键技术、案例实践三大模块16个章节);2.历年真题及解析(2009-2022年所有真题含综合知识、案例分析和论文);3.100+篇高质量论文范文;4.预测模拟题。早鸟价仅需9.9元,可节约80%资料搜集时间,帮助考生高效备考、顺利通过考试。专栏持续更新,有问题可随时联系作者。

数据知道的博客 1万+

Android日志实战——Tombstones日志分析(七)

Tombstones 一般是由 Dalvik 错误、状态监视调试器、C 层代码以及 libc 的一些问题导致的。当系统发生 Tombstone 的时候,内核(kernel)首先会上报一个严重的警告信号(signal),上层接收到之后,进程的调试工具会把进程中当时的调用栈现场保存起来,并在系统创建了 data/tombstones 目录后把异常时的进程信息写在此目录里面,开发者需要通过调用栈来分析整个调用流程来找出出问题的点。Tombstone原因分析pid 与 tid 相同,问题出在主线程。

小旭的专栏 2521

C语言语法规范

总结了网上比较常见的一些语法规范

weixin_48952729的博客 3604

黑猫带你学eMMC协议第1篇:全网最全emmc协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

黑猫带你学eMMC协议第7篇:全网最全emmc写保护详解(write protect) 黑猫带你学eMMC协议第8篇:emmc可靠写详解(Write Reliability) 黑猫带你学eMMC协议第9篇:emmc的分区配置(partitioning) 黑猫带你学eMMC协议第10篇:eMMC命令队列详解(CMDQ) 黑猫带你学eMMC协议第11篇:eMMC擦除详解(erase/trim/discard/sanitize/secure erase/secure trim…) 黑猫带你学eMMC协议第12篇:

黑猫奥利奥的博客 2万+

空括号的好处

int vaue;{     int a = 3;      int b = 4;      value = a+b; } 括号的好处:可以让程序的逻辑结构更加明了 比如上面的意义就是要获取一个value, 以后多多添加这样的空括号。 另外空括号还可以防止名字重复定义。

Coder 1201

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python中方括号是什么意思_python:变量名后面的括号()是什么意思?

在主回路的底部,我看到了这条线result = result()但我不知道它能做什么,我甚至不能用谷歌搜索它。这是什么?下面的代码从task.py和project.py导入。但这两个文件都没有任何与result()相关的内容,因此这里不包括它们。#!/usr/bin/env python3from task import Taskfrom project import Projectmain_me...

weixin_39942108的博客 1835

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

shell中的括号(小括号,中括号,大括号) linux中的(),(()),[],[[]],{}的作用

研究表明,小括号()用于命令分组和命令替换;双括号(( ))用于算术运算;中括号[]用于条件测试和文件通配;双中括号[[ ]]是 Bash 的增强测试命令,支持更多功能;大括号{}用于花括号扩展、变量名分隔和参数扩展。这些括号在 shell 脚本中是非常有用的工具,根据具体的脚本需求选择合适的括号类型可以提高脚本的效率和可读性。

likuoelie的博客 1307

C++类名后面跟大括号和跟小括号的区别

在某些情况下可能导致代码的二义性,因此在创建对象时,建议使用大括号进行初始化或直接省略括号。在 C++ 中,类名后面跟着大括号。用于对象初始化,而小括号。有不同的含义和作用。

qq_37377257的博客 2010

php如何拼接变量名,php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符...

php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符方式一:使用花括号,前缀部分不需要用单引号$nums10 = 100;$xxx*${bcount.$nums10}['m54']/$nums10方式二:使用两个$符,先给key赋值最终的变量名称,后面才当成真正的变量使用。$nkey = 'bcount'.$nums10;$xxx*$$nkey['m54']/$nums10=====...

weixin_31641077的博客 2839

linux下划线后面加变量名,Shell中下划线_与变量的关系

一个shell脚本根据日期和时间自动备份数据数据库的时候遇到一个问题$vi/u01/app/bak/bin/public_serbak.sh#!/bin/shexportORACLE_SID=orclexportORACLE_BASE=/u01/app/oracleexportORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1exportP...

weixin_28756413的博客 1270

动态创建变量名

<br /> <br />问题:<br /> 你想要动态地创建一个变量名.例如,你想要使用与数据库查询得到的字段称一致的变量名.<br />方案:<br />使用PHP中"可变变量"的语法,即在一个其值为你想作为变量名称的变量前面加一个$.<br /> $animal ='turtles';<br /> $turtles = 103;<br /> <br /> print $$animal;<br />讨论:<br /> 如果在一个变量名称前面放两个美元($)符号,PHP就会废弃右面的变量,而取其值,然后将

1692

php 变量名后跟括号()

<HTML> <HEAD> <TITLE>动态调用函数</TITLE> </HEAD> <BODY> <FONT SIZE=5> <? function write($text) //定义function ...

624

结构体类型名和变量名以及离不开的typedef

结构体类型名,结构体变量名,结构体与typedef

weixin_43420303的博客 1万+

Shell 脚本小贴士:${变量名} 和 $变量名 的区别及常见语法注意事项(附录6)

通过本篇内容,看看自己学到了什么为什么在变量后面紧跟字符时,要使用${变量名}而非$变量名${}在设定默认值、取子串、删除前后缀、计算长度方面的强大功能引号(单/双)、命令替换、管道、等常见“坑”及其应对方式希望大家在编写 Shell 脚本时,牢记这些注意事项,少踩坑、多写出健壮可维护的脚本。

小先森 1726

java的case后面可以加符合吗_java Switch中的case后面加上大括号({})和不加大括号的区别...

java基础求真之switch 的case 后面加上大括号和不加大括号的区别。下面给出三段代码大家看一下有什么不同以及哪段代码能够编译通过那段代码编译不能通过,为什么?(Why?)代码片段一:int value = 10;switch (value) {case 1:int value1 = 5;break;case 2:int value1 = 6;break;}代码片段二:int value ...

weixin_39642687的博客 1771

php动态创建变量名,PHP中动态创建变量名(可变变量)

PHP中,我们可以动态地创建一个变量名。例如,你想要使用与数据库查询得到的字段名称一致的变量名。使用PHP中“可变变量”的语法,即在一个其值为你想作为变量名称的变量前面加一个$:$animal = 'turtles';$turtles = 103;print $$animal;在PHP中如果在一个变量名称前面放两个美元($)符号,PHP就会废弃右面的变量,而取其值,然后,将该值作为“真正”的变量名...

weixin_30951515的博客 1201

java不带大括号_java Switch中的case后面加上大括号({})和不加大括号的区别

java基础求真之switch 的case 后面加上大括号和不加大括号的区别。下面给出三段代码大家看一下有什么不同以及哪段代码能够编译通过那段代码编译不能通过,为什么?(Why?)代码片段一:int value = 10;switch(value) {case 1:int value1 = 5;break;case 2:int value1 = 6;break;}代码片段二:int value =...

weixin_28839601的博客 937

Linux之shell中的大括号、中括号、小括号的使用详解+多示例

摘要:很多人和我一样对于shell的各种括号的各种用法肯定不是很清楚,有时候看见别人脚本都不知道是什么意思,今天就来说说bash中的大中小括号的用法和解释,本人常用bash所以也只能用bash来说明了,若其他shell有出入请勿怪我。 一、shell中的大括号(也叫花括号) "{}"的用法: 1、${var} 解释:当变量名和后面的内容都是变量命名所允许的内容时候这时候直接用$var是不行的得用{}把变量名括起来 2、${var:-string} 解释:当变量var值为空时var:−a会吧a作为值,当变

m0_52425873的博客 1万+
上一篇: 一场雷雨、几桩童趣
下一篇: 为一个朋友的代码进行纠错
SeaWave
博客等级 码龄27年 117粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值