需要类语法说明

时间:2013-08-08 22:11:25

标签: c++ class inheritance qt-creator qobject

我正在Qt环境中学习C ++,我在网上浏览了一个示例代码。 任何人都可以向我解释这个语法吗?

const TicTacToe * GetTicTacToe() const { return m_tictactoe.get(); }

为什么在函数的开始括号之前有const?它是指针还是乘法?

完整的类如下,但上面提到的指令的语法对我来说并不清楚

class QtTicTacToeWidget : public QWidget
 {
   Q_OBJECT
   public:
      explicit QtTicTacToeWidget(QWidget *parent = 0);
      const TicTacToe * GetTicTacToe() const { return m_tictactoe.get(); }
      void Restart();

2 个答案:

答案 0 :(得分:1)

第一个const表示无法更改变量指针TicTacToe。函数声明后的第二个常量表示在此函数内发生的任何事情都不会更改类中的任何成员变量。因为它实际上不会更改类上的内存数据,所以当您使用该类的任何常量对象时,可以使用它。例如:

const QtTicTacToeWidget myConstObject;
// Since myConstObject is a constant, I am not allowed to change anything inside
// the class or call any functions that may change its data.  A constant function
// is a function that does not change its own data which means I can do this:
myConstObject.GetTicTacToe();

// But I can not do the next statement because the function is not constant
// and therefore may potentially change its own data:
myConstObject.Restart();

答案 1 :(得分:0)

开始括号之前的const表示该函数是const成员函数。它基本上说它保证不修改类,因此可以在声明为const的对象上调用。

那么,它还允许函数修改const类中的可变变量。