-1

我看过这段代码

  void path(
    const char * p);
  » more...

void path(
    const std::string & p);
  » more...

能不能做如下修改,基本上把*和&..

void path(
    const char & p);
  » more...

void path(
    const std::string * p);
  » more...
4

3 回答 3

3

第一个是将字符数组作为指向第一个字符的指针传递。这就是在 C 中传统上处理字符串的方式,由于这两种语言的共同遗产,您有时会在 C++ 中看到它。虽然您可以传递一个引用并仔细记录它实际上应该是一个数组,但对于习惯于该约定的任何人来说,它都会感到困惑。

第二个是通过引用传递单个对象。虽然您可以使用指针模拟引用,但对于习惯于 C++ 引用语义的任何人来说,这会(轻微地)混淆。

于 2013-08-03T19:40:25.183 回答
1

在更改之前,您应该了解该功能正在尝试做什么。

让我们看看当您更改为时会发生void path(const char * p);什么void path(const char &p);

可能char *传递 a 的原因可能是该函数需要访问一个字符数组。如果将参数更改为char &p,则该函数仅接受 achar引用。

于 2013-08-03T19:57:01.003 回答
-1

是的你可以。但是你必须小心使用.->在这些函数中

并记住意思是强制改变的

于 2013-08-03T19:44:10.777 回答