Java与C++编程的不同 - 编程入门网
(reference)。注意在C++中构造一个对象的时候是不使用关键字new的,只需要在变量的名字后面直接赋予构造函数的参数就可以了,例如:
Point p(1,2); /* 构造对象 p */ 如果不跟参数赋值,则使用默认构造函数,例如: Time now; /* 默认使用构造函数 Time::Time() */ 这一点与Java很不同。在Java中,这个命令仅仅生成一个没有初始化的reference,而在C++中,它生成一个实际的对象。 当一个对象被赋给另一个对象变量的时候,实际的值将被拷贝。而在Java中,拷贝一个对象变量只不过是建立了另外一个指向对象的reference.拷贝一个C++的对象就像在Java中调用clone这个函数一样,而修改拷贝的值不会改变原对象的值。例如:
多数情况下,C++中这种对象直接对值操作的特性使用起来很方便,但是也有些时候不尽如人意: 1.当需要一个函数中修改一个对象的值,必须记住要使用按引用调用call by reference (参见下面函数部分); 2.两个对象变量不能指向同一个对象实体。如果你要在C++中实现这种效果,必须使用指针pointer(参见下面指针部分); 3.一个对象变量只能存储一种特定的类型的值,如果你想要使用一个变量来存储不同子类的对象的值(多态ploymorphism),则需要使用指针; 4.如果你想在C++中使用一个变量来或者指向null或者指向一个实际的对象,则需要使用指针。 5.函数 在Java中,每一个函数必须或者是对象函数(instance method),或者是静态函数(static function)或称类函数。C++同样支持对象函数和静态函数(类函数),但同时C++也允许定义不属于任何类的函数,这些函数叫做全局函数(global functions)。 特别的是,每一个C++ 程序都从一个叫做 main的全局函数开始执行:
还有另外一个格式的main函数可以用来捕捉命令行参数,类似于Java的main函数,但是它要求关于C格式的数组和字符串的知识,这里就不介绍了。 按照习惯,通常如果程序执行成功, main 函数返回0,否则返回非零整数。 同Java一样,函数参数是通过值传递的(passed by value)。在Java中,函数无论如何都是可以修改对象的值的。然而在C++中,因为对象直接存储的是实际的值,而不是指向值的reference,也就是说传入函数的是一个实际值的拷贝,因此也就无法修改原来对象的值。 所以,C++ 有两种参数传递机制,同Java一样的按值调用(call by value) ,以及按地址调用(call by reference)。当一个参数是按reference传递时,函数可以修改其原始值。Call by reference 的参数前面有一个地址号 & 跟在参数类型的后面,例如:
下面是一个典型的利用call by reference的函数,在Java中是无法实现这样的功能的。
如果使用 swap(x, y)来调用这个函数,则reference参数 a 和 b 指向原实际参数x 和 y的位置,而不是它们的值的拷贝,因此这个函数可以实现实际交换这两个参数的值。 在C++中,每当需要实现修改原参数的值时你就可以使用按地址调用call by reference。 Java与C++编程的不同(4)时间:2010-12-236.向量Vector C++ 的向量结构结合了Java中数组和向量两者的优点。一个C++ 的向量可以方便的被访问,其容量又可以动态的增长。如果 T 是任意类型,则 vector 是一个元素为 T 类型的动态数组。下面的语句 vector a; 产生一个初始为空的向量。而语句 vector a(100); 生成一个初始有100个元素的向量。你可以使用push_back 函数来添加元素: a.push_back(n); 调用a.pop_back() 从a中取出最 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |