什么'&'在方法声明之前,它在C ++中意味着什么

时间:2015-10-18 21:32:03

标签: c++11 methods ampersand

例如,如果方法定义如下:

  ILDCRTParams &GetParams() const;

这有什么不同:

 ILDCRTParams& GetParams() const;

我正在使用C ++ 11。

2 个答案:

答案 0 :(得分:6)

它们完全一样。返回类型为from OpenGL.GL import * from OpenGL.GLU import * from PyQt4 import QtGui from PyQt4.QtOpenGL import * class MainWindow(QtGui.QWidget): def __init__(self): super(MainWindow, self).__init__() self.widget = glWidget(self) self.button = QtGui.QPushButton('Test', self) mainLayout = QtGui.QHBoxLayout() mainLayout.addWidget(self.widget) mainLayout.addWidget(self.button) self.setLayout(mainLayout) class glWidget(QGLWidget): def __init__(self, parent): QGLWidget.__init__(self, parent) self.setMinimumSize(640, 480) def paintGL(self): glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLoadIdentity() glTranslatef(-2.5, 0.5, -6.0) glColor3f( 1.0, 1.5, 0.0 ); glPolygonMode(GL_FRONT, GL_FILL); glBegin(GL_TRIANGLES) glVertex3f(2.0,-1.2,0.0) glVertex3f(2.6,0.0,0.0) glVertex3f(2.9,-1.2,0.0) glEnd() glFlush() def initializeGL(self): glClearDepth(1.0) glDepthFunc(GL_LESS) glEnable(GL_DEPTH_TEST) glShadeModel(GL_SMOOTH) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(45.0,1.33,0.1, 100.0) glMatrixMode(GL_MODELVIEW) if __name__ == '__main__': app = QtGui.QApplication(['Yo']) window = MainWindow() window.show() app.exec_()

答案 1 :(得分:1)

不,他们的意思完全相同。 C ++是一种基于令牌的语言,除了充当分隔符之外,空格在令牌之间无关紧要。你可以把它写成

ILDCRTParams &GetParams() const;
ILDCRTParams& GetParams() const;
ILDCRTParams&GetParams() const;
ILDCRTParams & GetParams() const;

甚至

ILDCRTParams             &GetParams(         )const;

意义没有任何改变。

从语义上讲,&有效地修改了ILDCRTParams,但在语法上,它修改了GetParams()&GetParams()指定GetParams()返回引用。出于这个原因,有些人更喜欢将其放在ILDCRTParams旁边,而是GetParams()旁边的其他人。