Seu*_*ang 2 c++ arrays pointers class
我正在尝试从 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;
}
Run Code Online (Sandbox Code Playgroud)
如果你看一下,成员函数char* getPositions(void)
是在类内部声明的。
我知道假设可能真的很糟糕,但这就是我的思考过程和问题
由于您基本上是在阅读一系列字符,这就是为什么它必须是char*
.
为什么必须的参数getPositions(void)
?这可以与空括号 () 相同吗?
如果函数原型是char* getPositions()
,是否意味着它返回了指针?我可以假设返回值char*getPosition(void)
指向char array(positionsSelected)
.
如果我的假设是错误的 3. 我可以放这样的东西吗
char* getPositions(void){
char* pointers;
pointers = positionSelected;
return pointers;
}
Run Code Online (Sandbox Code Playgroud)
任何建议或解释将不胜感激。
- 由于您基本上是在阅读一系列字符,这就是它必须是 char* 的原因。
最好是让会员std::string positionsSelected;
。然后你可以std::string const &
从你的方法中返回。这既安全又易于使用。
- 为什么 getPositions(void) 的参数必须要?这可以与空括号 () 相同吗?
由于来自 C 的包袱,这两种语法都被接受,它们可能意味着不同的东西:
void foo(void);
明确指定不接受任何参数。void foo();
没有指定接受哪些参数。在 C++ 中,它们都意味着相同的事情:不接受任何参数。空括号是首选语法 ( char * getPositions();
)。
- 如果函数原型是char* getPositions(),是否意味着它返回了指针?我可以假设 char*getPosition(void) 的返回值指向 char 数组(positionsSelected)。
是的,你可以做出这个假设。数组隐式衰减到指向第一个元素的指针。