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

时间:2022-10-14 08:45:02

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)。