首页 > 其他 > 详细

指针和引用当参数传递的一个奇怪现象——目前没在书上找到原因

时间:2014-02-15 16:38:15      阅读:301      评论:0      收藏:0      [点我收藏+]

当用引用传参时候,内存会有错误

代码如下:

#include <iostream>

using namespace std;


class A
{
protected:
	int i;
public:
	A(){ i = 99; }
};

class B :public A
{
public:
	void BF(){cout << i << endl; }//内存错误
};

class C
{
private:
	B &b;

public:
	C(B &b) :b(b)//********这里用应用传参***********运行会错误
	{
	}
	void CF(){ b.BF(); }
};

class D :
	public B, public C
{
public:
	D() :
		B(), C(*this)
	{
		CF();
	}
};

int main(int argc, char* argv[])
{
	D d;
	return 0;
}

星号处改为用指针传参,不会有问题

代码如下:

#include <iostream>

using namespace std;


class A
{
protected:
	int i;
public:
	A(){ i = 99; }
};

class B :public A
{
public:
	void BF(){cout << i << endl; }
};

class C
{
private:
	B *b;

public:
	C(B *b) :b(b)//********这里用引用传参***********运行会错误
	{
	}
	void CF(){ b->BF(); }
};

class D :
	public B, public C
{
public:
	D() :
		B(), C(this)
	{
		CF();
	}
};

int main(int argc, char* argv[])
{
	D d;
	return 0;
}

目前对此问题还没想法,坐等大神回复。

指针和引用当参数传递的一个奇怪现象——目前没在书上找到原因

原文:http://blog.csdn.net/ganze_12345/article/details/19237829

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!