快速业务通道

Java与C++编程的不同 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
后一个元素(操作后这个元素被从a中删掉), 使用函数size 可以得到当前a中的元素个数。

你还可以通过我们熟悉的[]操作符来访问向量中元素,例如:

for (i = 0; i < a.size(); i++) {   sum = sum + a[i];   }

同Java中一样,数组索引必须为 0 和 a.size() - 1之间的值。但是与Java不同的是,C++中没有runtime的索引号合法性检验。试图访问非法的索引位置可能造成非常严重的出错。

就像所有其它C++ 对象一样,向量也是值。如果你将一个向量赋值给另外一个向量变量,所有的元素都会被拷贝过去。

vector b = a; /* 所有的元素都被拷贝了 */

对比Java中的情况,在Java中,一个数组变量是一个指向数组的reference.拷贝这个变量仅仅产生另外一个指向同一数组的reference,而不会拷贝每一个元素的值。

正因如此,如果一个C++函数要实现修改向量的值,必须使用reference参数:

void sort(vector& a)    { ...    }

Java与C++编程的不同(5)

时间:2010-12-23

7.输入和输出

在C++中,标准的输入输出流用对象cin 和cout 表示。我们使用<< 操作符写输出,例如:

cout << “Hello, World!”;

也可以连着输出多项内容,例如:

cout << “The answer is ” << x << “\n”;

我们使用 >> 操作符来读入一个数字或单词,例如:

double x; cout << “Please enter x: ”; cin >> x; string fname; cout << “Please enter your first name: ”; cin >> fname;

函数getline可以读入整行的输入,例如:

string inputLine; getline(cin, inputLine);

如果到达输入的结尾,或者一个数字无法被正确的读入,这个流对象会被设置为failed 状态,我们可以使用函数 fail 来检验这个状态,例如:

int n; cin >> n; if (cin.fail()) cout << “Bad input”;

一旦一个流的状态被设为failed,我们是很难重置它的状态的,所以如果你的程序需要处理错误输入的情况,应该使用函数getline 然后人工处理得到的输入数据。

8.指针pointer

我们已经知道在C++中,对象变量直接存储的是对象的值。这是与Java不同的,在Java中对象变量存储的是一个地址,该地址指向对象值实际存储的地方。有时在C++中也需要实现这样的布置,这就用到了指针pointer.在C++中,一个指向对象的变量叫做指针。如果T是一种数据类型,则T* 是指向这种数据类型的指针。

就像Java中一样,一个指针变量可以被初始化为空值NULL,另外一个指针变量的值,或者一个调用new生成的新对象:

Employee* p = NULL; Employee* q = new Employee(“Hacker, Harry”, 35000); Employee* r = q;

实际上在C++中还有第四种可能,那就是指针可以被初始化为另外一个对象的地址,这需要使用地址操作符&:

Employee boss(“Morris, Melinda”, 83000); Employee* s = &boss;

这实际上并不是什么好主意。保险的做法还是应该直接让指针指向使用 new生成的新对象。

到目前为止,C++ 指针看起来非常像Java 的对象变量。然而,这里有一个很重要的语法的不同。我们必须使用星号操作符 * 来访问指针指向的对象。如果 p 是一个指向Employee对象的指针,则 *p 才代表了这个对象:

Employee* p = ...; Employee boss = *p;

Java与C++编程的不同(6)

时间:2010-12-23

当我们需要执行对象的函数或访问对象的一个数据域时,也需要使用 *p :

(*p)。setSalary(91000);

*p外面的括号是必需的,因为 .操作符比 * 操作符有更高的优先级。C的设计者觉得这种写法很难看,所以他们提供了另外一种替代的写法,使用 ->

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号