如何解决关于类中的char *函数成员函数的问题
我正在尝试从Udacity学习c ++。我需要澄清我所理解的正确与否。因此,代码如下。
井字游戏:
class Board
{//the class tracks the game and the winner
char positionsSelected[16];
char winner;
public:
//Constructor
Board();
int setPosition(int gridNumber,char user);
char* getPositions(void);
};
char* getPositions(void)
{//return all the positions on the board
return positionsSelected;
}
如果您查看它,则成员函数char* getPositions(void)
是在类内部声明的。
我知道假设可能真的很糟糕,但这就是我的思考过程和问题所在
-
由于您基本上是在阅读字符序列,因此,它必须为
char*
。 -
为什么必须
getPositions(void)
的参数?可以和空括号()一样吗? -
如果功能原型为
char* getPositions()
,是否表示它返回了指针?我可以假设char*getPosition(void)
的返回值指向char array(positionsSelected)
。 -
如果我的假设在3上是错误的,我可以这样写吗
char* getPositions(void){
char* pointers;
pointers = positionSelected;
return pointers;
}
任何建议或解释将不胜感激。
解决方法
- 由于您基本上是在阅读一个字符序列,所以这就是必须要使用char *的原因。
最好是将成员设为std::string positionsSelected;
。然后,您只需从您的方法中返回std::string const &
。这样既安全又简单。
- 为什么必须使用getPositions(void)的参数?可以和空括号()一样吗?
由于来自C的包oth,两种语法均被接受,它们可能表示不同的含义:
-
void foo(void);
明确指定不接受任何参数。 -
void foo();
未指定接受哪些参数。
在C ++中,它们的含义相同:不接受任何参数。空括号是首选语法(char * getPositions();
)。
- 如果功能原型是char * getPositions(),是否意味着它返回了指针?我可以假设char * getPosition(void)的返回值指向char array(positionsSelected)。
是的,您可以进行此假设。数组隐式衰减到指向第一个元素的指针。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。