C++与java的区别.

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:zhangsan
	222:lisi
	333:zhangsan
	你看:传了一个对象也是值传递.
 */

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

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


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

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

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

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

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


不断更新...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值