• 5288阅读
  • 3回复

关于const关键字的问题 [复制链接]

上一主题 下一主题
离线y383564500
 
只看楼主 倒序阅读 楼主  发表于: 2008-12-20
— 本帖被 XChinux 执行加亮操作(2008-12-23) —
请问各位大虾们,下面里面函数定义中,为何在后面跟了个const关键字,这有何用途的呢???
#include <QDesignerCustomWidgetInterface>
class IconEditorPlugin : public QObject, public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
    IconEditorPlugin(QObject *parent = 0);
    QString name() const;
    QString includeFile() const;
    QString group() const;
    QIcon icon() const;
    QString toolTip() const;
    QString whatsThis() const;
    bool isContainer() const;
    QWidget *createWidget(QWidget *parent);
};
离线blackdire

只看该作者 1楼 发表于: 2008-12-20
该函数不能修改成员变量
离线y383564500
只看该作者 2楼 发表于: 2008-12-22
我找到了答案!!!谢谢啦!!!
使用const关键字进行说明的成员函数,称为常成员函数。只有常成员函数才有资格操作常量或常对象,没有使用const关键字说明的成员函数不能用来操作常对象。常成员函数说明格式如下:

  <类型说明符> <函数名> (<参数表>) const;

其中,const是加在函数说明后面的类型修饰符,它是函数类型的一个组成部分,因此,在函数实现部分也要带const关键字。下面举一例子说明常成员函数的特征。

#include
class R
{
public:
R(int r1, int r2) { R1=r1; R2=r2; }
void print();
void print() const;
private:
int R1, R2;
};

void R::print()
{
cout< }

void R::print() const
{
cout< }

void main()
{
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
}


  该例子的输出结果为:

  5,4
  20;52

  该程序的类声明了两个成员函数,其类型是不同的(其实就是重载成员函数)。有带const修饰符的成员函数处理const常量,这也体现出函数重载的特点。

  常数据成员

  类型修饰符const不仅可以说明成员函数,也可以说明数据成员。

  由于const类型对象必须被初始化,并且不能更新,因此,在类中说明了const数据成员时,只能通过成员初始化列表的方式来生成构造函数对数据成员初始化。
离线wvins
只看该作者 3楼 发表于: 2008-12-22
我来告诉你为什么使用const
举个例子,通常我们传递参数是
void f(const MyObject &mo)
{
//这里就只能调用mo的const的函数
非const函数是不能调用的

}
快速回复
限100 字节
 
上一个 下一个