c++ - 关于类中 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()
,是否意味着它返回指针?我可以假设返回值 fromchar*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 的包袱,这两种语法都被接受,它们可能意味着不同的东西:
void foo(void);
明确指定不接受任何参数。void foo();
没有指定接受哪些参数。
在 C++ 中,它们的含义相同:不接受任何参数。空括号是首选语法 ( char * getPositions();
)。
- 如果函数原型是char* getPositions(),是否意味着它返回了指针?我可以假设 char*getPosition(void) 的返回值指向 char array(positionsSelected)。
是的,你可以做出这个假设。数组隐式衰减为指向第一个元素的指针。
推荐阅读
- php - 如何从 MySQLI 数据库中选择并显示活动用户的名称
- django - 无法导入模块“处理程序”:没有名为“werkzeug”的模块
- python - Disable QDial mouse clicks and change the needle
- sql - 将 GROUP BY 子查询嵌入到 GROUP BY 查询中
- visual-c++ - 如何在游戏c ++中读/写内存
- html - 如何为 data-src 设置自定义 CSS
- hadoop - 当一个节点在 Hadoop Cluster 中很慢?
- python - pymysql.err.Error:已经在 heroku 上的烧瓶中关闭
- javascript - 将道具传递给
或将隐藏数据传递给路由器但不使用参数 - c++ - 为什么我的成员变量在每次循环迭代结束时消失?