C++基本语法之——声明与定义

本文详细解析了C++中的声明与定义的概念及其区别,并举例说明了不同类型的声明与定义,包括变量、函数、结构体等。同时介绍了C++如何隐式定义默认构造器等成员函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、一个声明(条款7)将名字引入到一个翻译单元中,或是将已经由先前声明所引入的重声明名字引入到一个翻译单元中。一个声明指定了这些名字的解释和属性。

举个例子:

 

 

2、一个声明是一个定义,除非它声明了一个函数却没有指定函数体(8.4);或是它含有extern指定符(7.1.1)或连接指定符(7.5),并且该连接指定符既不包含一个初始化器,也不包含一个函数体;或是它在一个类声明中声明了一个静态数据成员(9.4);或者它是一个类名的声明(9.1);或者它是一个typedef声明(7.1.3);或是一个using声明(7.3.3);或是一个using指示符(7.3.4)。

这里要说明的是“连接指示符”就是extern "C"{}、extern "C++"{}这些。

 

3、以下代码既是声明又是定义:

 

以下代码仅仅是声明:

 

 

4、[注:在某些情况下,C++实现隐式地定义了默认的构造器(12.1)、拷贝构造器(12.8)、赋值操作符(12.8)或析构器(12.4)成员函数。例如给定:

 

实现将隐式地定义函数,使得结构C的定义等价与:

 

]

 

5、[注:一个类名也可以通过一个复杂类型指定符(3.3.1)而被隐式声明]

复杂类型指定符的语法定义如下:

 

(注:$opt表示$opt前面的一个token是可选的,即在某些情况下可省)

 

6、如果任一对象的定义把一个不完整的类型给了这个对象,那么这个程序是不良定义的(3.9)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值