C++ Simple declaration

C++是静态类型语言,提供了丰富的数据类型,它的简单声明的文法如下(摘自C++11标准):

simple-declaration:
	decl-specifier-seq(opt) init-declarator-list(opt) ;
	attribute-specifier-seq decl-specifier-seq(opt) init-declarator-list ;

init-declarator-list:
	init-declarator
	init-declarator-list , init-declarator

init-declarator:
	declarator initializer(opt)

decl-specifier-seq:说明符序列,由空格分隔的说明符。

init-declarator-list:声明符列表,由逗号分隔的声明符。

说明符包括:

cv-qualifier
constexpr
storage class specifier (register, static, thread_local (since C++11), extern, mutable)
simple type specifier (char, char8_t (since C++20), char16_t, char32_t (since C++11), wchar_t, bool, short, int, long, signed, unsigned, float, double, void)
等等

声明符包括:

unqualified-id attr(optional)
qualified-id attr(optional)
... identifier attr(optional)
* attr(optional) cv(optional) declarator
nested-name-specifier * attr(optional) cv(optional) declarator
& attr(optional) declarator
&& attr(optional) declarator
noptr-declarator [ constexpr(optional) ] attr(optional)
noptr-declarator ( parameter-list ) cv(optional) ref(optional) except(optional) attr(optional)

&、[]、()可以被递归使用。

以一个高阶函数作为例子:

void *(*(*f(  void *(*(*fptr)())()   ))())()
{
    return fptr;
}

注1:所谓高阶函数是指至少满足下列两个条之一的函数:

  1. 该函数的参数中至少有一个是函数
  2. 该函数的返回值是一个函数

高阶函数是高阶逻辑的实现,一般应用于人工智能领域。Lisp对高阶函数的支持最友好。

注2:由于函数在C++中是一个类型,不能直接用于函数参数和返回值,因此使用函数指针。另外在C++实践中不要这样定义高阶函数,它非常的ugly。从C++11开始支持std::function,推荐用它来定义函数算子,更灵活更清晰。

参考:https://en.cppreference.com/w/cpp/language/declarations

转载于:https://my.oschina.net/guzhou/blog/3035366

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值