快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
; 操作符来实现 * 和 .操作符的组合功能。表达式:

p->setSalary(91000);

可以调用对象*p的函数setSalary .你可以简单的记住 .操作符是在对象上使用的,-> 操作符是在指针上使用的。

如果你不初始化一个指针,或者如果一个指针为空值 NULL 或指向的对象不再存在,则在它上面使用 * 或 -> 操作符就会出错。 不幸的是C++ runtime 系统并不检查这个出错。如果你范了这个错误,你的程序可能会行为古怪或死机。

而在Java中,这些错误是不会发生的。所有的reference都必须初始化,所有的对象只要仍有reference指向它就不会被从内存中清除,因此你也不会有一个指向已被删除的对象的reference.Java的runtime系统会检查reference是否为空,并在遇到空指针时抛出一个null pointer的例外(exception)。

C++和Java还有一个显著的不同,就是Java 有垃圾回收功能,能够自动回收被废弃的对象。而在C++中,需要程序员自己管理内存分配回收。

C++中当对象变量超出范围时可以自动被回收。但是使用new生成的对象必须用delete操作符手动删除,例如:

Employee* p = new Employee(“Hacker, Harry”, 38000); ... delete p; /* 不在需要这个对象 */

如果你忘记删除一个对象,那么你的程序有可能最终用光所有内存。这就是我们常说的内存泄漏 (memory leak)。更重要的是,如果你如果删除了一个对象,然后又继续使用它,你可能覆盖不属于你的数据。如果你刚巧覆盖了用于处理内存回收的数据域,那么内存分配机制就可能运转失常而造成更严重的错误,而且很难诊断和修复。因此,在C++中最好尽量少用指针。

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

时间:2010-12-23

9.继承

C++和Java中继承的基本语法是很相似的。在C++中,使用 : public 代替Java中的extends 来表示继承关系 .(C++ 也支持私有继承的概念,但是不太有用。

默认情况下,C++中的函数不是动态绑定的。如果你需要某个函数实现动态绑定,需要使用virtual声明它为虚函数,例如:

class Manager : public Employee   {   public:   Manager(string name, double salary, string dept);   virtual void print() const;   private:   string department;   };

同Java一样,构造函数中调用父类的构造函数有特殊的语法。 Java使用关键字 super.C++中必须在子类的构造函数体外调用父类的构造函数。下面是一个例子:

Manager::Manager(string name, double salary, string dept)   : Employee(name, salary) /* 调用父类的构造函数 */   { department = dept;   }

Java 中在子类函数中调用父类的函数时也使用关键字super .而在C++中是使用父类的名称加上操作符 ::表示,例如:

void Manager::print() const   { Employee::print(); /* 调用父类的函数 */   cout << department << “\n”;   }

一个C++对象变量只能存储特定类型的对象值。要想在C++中实现多态(polymorphism),必须使用指针。一个T*指针可以指向类型为T或T的任意子类的对象,例如:

Employee* e = new Manager(“Morris, Melinda”, 83000, “Finance”);

你可以将父类和不同子类的对象混合收集到一个元素均为指针的向量中,然后调用动态绑定的函数,如下所示:

vector staff;   ...   for (i = 0; i < staff.size(); i++)   staff[i]->print();

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号