1

最近我在只使用网络编程之后一直在学习 C++,到目前为止,通过 cplusplus 教程,一切进展顺利。不过,我一直在努力解决的一件事是使用指针来引用数据结构中的对象。基本上:

string mystr;
movies_t amovie;    // create new object amovie from structure movies_t
movies_t* pmovie;   // create a new pointer with type movies_t
pmovie = &amovie;   // reference address of new object into pointer

cout << "Enter movie title: ";
getline(cin, pmovie->title);
cout << "Enter year: ";

getline (cin, mystr);

(stringstream) mystr >> pmovie->year;

cout << endl << "You have entered:" << endl;
cout << pmovie->title;
cout << " (" << pmovie->year << ")" << endl;

可以像这样简单地编写:

string mystr;
movies_t amovie;

cout << "Enter movie title: ";
getline(cin, amovie.title);
cout << "Enter year: ";
getline(cin, mystr);

(stringstream) mystr >> amovie.year;

cout << endl << "You have entered:" << endl;
cout << amovie.title;
cout << " (" << amovie.year << ")" << endl;

我了解它们在数组中的用途,但我很难理解为什么使用指针比从结构中引用值本身更可取。

4

1 回答 1

2

我理解它们在数组中的用途,但我很难理解为什么使用指针比从结构中引用值本身更可取。

他们不是。仅当您出于某种原因无法直接引用变量时(例如,因为要引用的值可能会更改),应使用指针。

除此之外,你在这里使用 C 风格的演员肯定是有创意的。但不要这样做。C 风格的强制转换在 C++ 中通常是不可接受的。在这里使用static_cast

static_cast<stringstream>(mystr) >> amovie.year;

或者至少使用函数式强制转换:

stringstream(mystr) >> amovie.year;

…但实际上整行代码(包括 的声明mystr)完全没用。直接读取值即可:

cout << "Enter year: ";
cin >> amovie.year;
于 2013-09-14T12:07:29.703 回答