C++数据结构编程:通过引用传递值?
C++数据结构编程:通过引用传递值?
我已经完成了这个C++数据结构程序,大部分是正确的,但是我在RefFunction()
参数上遇到了麻烦。它们的设计不太正确。它们不应该是值传递,而是引用传递,我不知道该怎么做。它接受一个对int
的引用和一个对double
的引用。它询问用户输入要存储在其参数所引用的变量中的值。然后能够在main()
中返回类实例并打印这些值。非常感谢任何帮助,因为我非常困惑。非常感谢。\n头文件:\n
#ifndef Prog1Class_h #define Prog1Class_h //一个包含三个变量的Prog1Struct类型的数据结构 struct Prog1Struct { int m_iVal; double m_dVal; char m_sLine[81]; }; //一个包含构造函数和析构函数以及函数原型的Prog1Class类 class Prog1Class { public: Prog1Class(); ~Prog1Class(); void PtrFunction(int *, double *); void RefFunction(int &, double &); void StructFunction(Prog1Struct *); }; #endif
\n.CPP文件\n
#include "Prog1Class.h" #include#include using namespace std; Prog1Class::Prog1Class() {} Prog1Class::~Prog1Class() {} //PtrFunction将询问用户输入要存储在其指针参数所引用的变量中的值 void Prog1Class::PtrFunction(int *a, double *b) { cout << "输入整数和浮点数类型的键盘值"< >*a >>*b; } //RefFunction将是一个C++引用函数,并询问用户输入要存储在其参数所引用的变量中的值 void Prog1Class::RefFunction(int &a, double &b) { cout << "输入整数和浮点数类型的键盘值"< >a >>b; } //StructFunction将询问用户输入要存储在其参数所引用的数据结构的三个字段中的值 void Prog1Class::StructFunction(Prog1Struct* s) { cout << "输入整数和浮点数类型的键盘值"< >s->m_iVal>>s->m_dVal; cout <<"输入一个字符字符串"; cin.ignore(1000, '\n'); cin.getline(s->m_sLine, 81, '\n'); }
问题的原因是在C++中,不需要使用指针来进行按引用传递。可以通过声明函数来实现按引用传递,如下所示:void Prog1Class::RefFunction(int& a, double& b)
。在RefFunction
内部对a和b所做的更改将反映在原始变量中。解决方法是使用按引用传递的方式声明函数。
非常感谢,程序现在可以正确编译和运行了。
"I would say that you NEVER 'use pointers to pass by reference'. Using pointers is pass by value."(我会说你从不“使用指针进行按引用传递”。使用指针是按值传递。)