Java C++ 声明定义
来源:互联网 发布:cnc自动编程软件 编辑:程序博客网 时间:2024/06/03 21:59
1.什么时候声明同时也是定义,什么时候只是声明?
相同点:
C++和Java中使用一个标识符之前必须对其进行声明.但是标识符的声明和定义不是一回事儿.
定义是指分配了内存空间.
不同点:
C++中只是声明而非定义的示例如下:
extern int error_num; //使用外部变量的声明
class Student; //类的前向声明(不完整声明)
double d( double ); //被调用函数的声明
C++中大多数情况下声明的同时进行了定义(即分配了内存空间),无论是全局变量还是局部变量,还有对象的数据成员.
int j;
int count = 1; //声明,定义,初始化为一体.
string s; //C++创建对象的时候既声明又定义,当然其成员也会定义.但是进行类类型的声明时不会分配内存.
Java中声明是否同时为定义有两种情况,如int a;
(1).如果a为一个方法的局部变量(无初始值)的话,则其只是一个声明而非定义(即不分配内存).
如果希望在声明一个局部变量的同时为其定义,则可以对其进行初始化.如int a = 1;
(2),如果a为一个类的数据成员的话,则其既是声明又是定义(即分配内存).
2,C++和Java中的变量是否在定义的时候进行了缺省初始化?
相同点:
C++和Java中都存在对定义的变量进行初始化的机制,只是具有不同的规则,同时缺省初始化时都是将变量初始化为适当的0.
不同点:
C++中只对于两种类型的数据作出缺省的初始化:
(1).作为全局变量的基本类型.
(2).具有一个无参构造函数的类类型的对象,会根据其无参的构造函数来进行缺省的初始化.
具体的规则是:
整型 0 , 浮点型 0.0 , 布尔型 false (0) ,字符型 '\0' ,
类类型 取决于其无参构造函数.
说明1:
如果没有提供一个无参构造函数,此时有两种情况:
(1).同时也没有其他的构造函数的话,系统会为类提供一个缺省的无参构造函数,虽然按照规则进行初始化,但是只进行了内存分配而不进行初始化,所以指针成员会出现垃圾信息.
(2).同时定义了其他的构造函数,只是没有一个无参的构造函数,这是系统不会自动提供无参的构造函数,
此时 形如 类名 + 对象名; 这种方式将会出错.
如果一个类中包含了未初始化的const或者引用成员,系统将不会提供一个缺省的无参构造函数.只能提供一个自定义的无参构造函数进行显式地初始化.
Java中变量在定义时的缺省初始化规则:
只有一种情况:一个变量首次在函数的内部出现且没有为其赋予初始值的话(即为一个方法的局部变量(无初始值))都是声明而非定义.
整型 0, 单精度 0.0f , 双精度 0.0 , 字符型 \ u0000, 布尔型 false (0), 对象引用 null.
注意:
类名 + 对象 ; 在java中只是声明而不定义(分配内存空间),其值为null,不能直接使用.
类名 + 对象 = new 类名(...); 才是声明和定义,分配内存空间,可以直接使用.
C++的代码示例:
- Java声明和定义
- Java C++ 声明定义
- C/C++定义与声明
- C/C++ 声明与定义
- C/C++ 声明 定义 【T】
- C语言定义与声明
- C/C++定义与声明
- C中的声明与定义
- C/C++的声明 定义
- C语言定义与声明
- C语言声明与定义
- C语言声明与定义
- c语言定义和声明
- C语言定义和声明
- JAVA 全局变量 声明与定义
- 【C/C++】变量的定义与声明
- C语言: 如何区分 声明与定义
- C--如何定义复杂的类型声明
- 【web】要点归纳
- C/C++ 野指针
- 表、栈和队列
- 下定决心踏上软考之路
- 解读 OpenRegistryKey
- Java C++ 声明定义
- UNIX设计的思想。让每个程序只具有一项专门的能力,然后让它们合作
- 38. Count and Say徒手尝试#2(Done)
- [leetcode]287.Find the Duplicate Number
- leetcode(87).389. Find the Difference
- MySQL 操作总结(一)
- c语言里面log函数怎么用
- 读取联系人
- 大型网站技术架构