求c++大神指点,为什么这样写编译也能够通过,顺便问一下这种情况是什么意思。
3个回答
展开全部
change函数的定义和声明是不匹配的(声明有参数,定义里没有),所以编译器会当作是重载的change函数,于是给出红线提示,就是说这个红线提示是二义性提示,这是个实时文本语法提示。但是change后面没有括号,那么这个change就仅仅是个无聊的地址(函数名代表函数地址),不会产生实际的函数调用,会被优化掉,所以可以通过编译,但是编译期会有警告。
如果你把括号加上,就不能通过编译了,因为有实际的函数调用了,却找不到没有参数的change()声明
如果你把括号加上,就不能通过编译了,因为有实际的函数调用了,却找不到没有参数的change()声明
展开全部
可以通过编译,会有警告
warning: statement is a reference, not call, to function `change',
语句不会被调用
warning: statement is a reference, not call, to function `change',
语句不会被调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译不能通过吧,主函数change下面还有红线提示
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询