关于声明语法的技巧问题

关于声明语法的技巧问题,第1张

概述看看这里: 在下面的代码中,b的类型是什么? struct A { A (int i) {}};struct B { B (A a) {}};int main () { int i = 1; B b(A(i)); // what would be the type of b return 0;} 我会感激,如果有人可以向我解释为什么这样的语法存 看看这里:
在下面的代码中,b的类型是什么?
struct A {    A (int i) {}};struct B {    B (A a) {}};int main () {    int i = 1;    B b(A(i)); // what would be the type of b    return 0;}

我会感激,如果有人可以向我解释为什么这样的语法存在:)

谢谢.

解决方法 C的疣(和C继承它(并使其变得更糟))之一是引入声明没有特殊的语法.这意味着声明通常看起来像可执行代码.另一个例子:
A * a;

这是乘以A,还是宣布某事?为了理解这一行,你必须知道A是一个类型的名称.

C中的基本规则是,如果某些东西可以被解析为一个声明,那就是.在这种情况下,它会导致一个奇怪和惊人的结果.函数声明看起来很像函数调用,特别是(在A之后可以用几种方式考虑).

您可以在此示例中解决此问题,其中包含删除编译器将代码解析为声明的能力的额外括号.

B b((A(i)));

在C中,这并不模糊,因为没有构造函数调用的函数样式,因为没有构造函数. A是类型的名称,或者是函数的名称.它不能同时存在.

总结

以上是内存溢出为你收集整理的关于声明语法的技巧问题全部内容,希望文章能够帮你解决关于声明语法的技巧问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存