C++与java的区别.

来源:互联网 发布:中怡康家电市场数据 编辑:程序博客网 时间:2024/05/17 04:01

1. this.name= name, 变成了this->name=name;

#include <string>using namespace std;class Person {private:string name;public:void setName(string name) {//一个简单的javabean就变成了这样.//要用->而不是用.this->name = name;}string getname() {return name;}};

2.方法中传对象也是值传递.

#include <iostream>#include "Person.cpp"using namespace std;void setname_out(Person p);int main() {Person p;//这样就初始化了P. 还真有点不好理解.p.setName("zhangsan");cout << "111:" << p.getname() << endl;setname_out(p);cout << "333:" << p.getname() << endl;return 0;}void setname_out(Person p) {p.setName("lisi");cout << "222:" << p.getname() << endl;}/**结果打印为:111:zhangsan222:lisi333:zhangsan你看:传了一个对象也是值传递. */

3. 指针传递的是地址, 所以可以改变原值.--->忘了那本书说了, java中的引用传递就是用了指针.

void setname_out_pointer(Person *p){(*p).setName("lisi");cout<<"222:"<<(*p).getname()<<endl;}/**结果打印为:111:zhangsan222:lisi333:lisi */


4. C++中的引用不是java中的引用哦~, 它是变量的别名, 但是在函数传递这块也和直接传递变量不一样, 因为它可以改变原值.

    为什么?  书曰: 引用作为函数参数, 这时函数并没有对形参对象初始化(就是说直接用变量传递对形参对象初始化了).

void setname_out_pointer(Person *p){(*p).setName("lisi");cout<<"222:"<<(*p).getname()<<endl;}/**结果打印为:111:zhangsan222:lisi333:lisi */

注意: 4.1 引用对象不是一个独立的对象,不单独战胜内存单元,所以传引用比传指针好

          4.2 虽然系统向实参传递的是实参的地址而不是实参的值,但实参必须使用对象名.


不断更新...

原创粉丝点击