关于类中char*函数成员函数的问题 我正试着从Udacity那里学习C++。如果我的理解正确与否,我需要一些澄清。代码如下
Tictaoe游戏:关于类中char*函数成员函数的问题 我正试着从Udacity那里学习C++。如果我的理解正确与否,我需要一些澄清。代码如下,c++,arrays,class,pointers,C++,Arrays,Class,Pointers,Tictaoe游戏: 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* ge
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*getPosition(void)
的返回值指向char数组(positionsSelected)
std::string位置代码>。然后可以从方法返回std::string const&
。这既安全又简单易用
为什么getPositions(void)的参数必须为空?这是否可以与空括号()相同
由于baggage from C,这两种语法都可以接受,它们可以表示不同的含义:
void foo(void)代码>明确指定不接受任何参数
void foo()代码>不指定接受哪些参数
在C++中,它们都是相同的:没有接受任何参数。空参数是首选语法(char*getPositions();
)
如果函数原型是char*getPositions(),是否意味着它返回指针?我可以假设char*getPosition(void)的返回值指向char数组(positionsSelected)
是的,你可以做这个假设。数组隐式地衰减为指向第一个元素的指针。不相关:知道赢家并不是我任务一个Tic-Tac-Toe游戏板的责任。对我来说,棋盘
应该代表棋盘,并且幸福地不知道游戏逻辑。请注意,通过返回位置selected
,在没有守卫的情况下,getPositions
的调用者可以做任何他们想做的事情。与其将整个游戏板公开给公众审查,不如使用char get_position(intx,inty)
这样的函数,让用户一次只能看到一个角色。这样,游戏板的真正本质仍然存在。你可以完全重写棋盘的内部,没有人会知道它现在将棋盘存储在一团神奇的仙尘或其他东西中。“最好将成员std::string positions选中;
。然后你可以从你的方法返回std::string const&
。这既安全又简单。”-或者,std::array
而不是std::string
,这样您就不会有动态内存分配的开销。
char* getPositions(void){
char* pointers;
pointers = positionSelected;
return pointers;
}