• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    5年前 (2013-04-08)  C++ |   4 条评论  5 
    文章评分 0 次,平均分 0.0

    一、关于const类成员函数有以下几个需要注意的地方:

    1. 在普通的非const成员函数中,this的类型是一个指向类类型的const指针,而const成员函数中,this的类型是一个指向const类类型对象的const指针。由于这个原因:
    (1) 返回值 函数名 (参数列表) const {…} 这种格式只能用在类的成员函数中,非成员函数只能使用这种形式:void f1(const std::string& s);
    (2) 如要返回该类对象的引用(*this),则在返回值声明前加上const(指向const对象的指针或引用一定要为const型的)。
    2. 基于成员函数是否是const,可以进行重载,这里又有以下要注意:
    (1) const成员函数中的const标签必须在函数声明和定义中都要指出;
    (2) const对象只能使用const成员函数,非const对象可以使用任一成员。
    3. 构造函数不可声明为const

     

    二、关于const类数据成员有以下几个需要注意的地方:

    1. const static int 可以使static数据成员在类定义体内初始化;
    2. 可以通过将数据成员声明为mutable来实现对该类const对象的该数据成员的更改;
    3. 初始化const数据成员的唯一机会实在构造函数的初始化列表中,直接在类的定义体中以及在构造函数的定义体中初始化都是不正确的。

    在C++中,static静态成员变量不能在类的内部初始化。在类的内部只是声明,定义必须在类定义体的外部,通常在类的实现文件中初始化,如:double Account::Rate=2.25;static关键字只能用于类定义体内部的声明中,定义时不能标示为static

    在C++中,const成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。

    const数据成员 只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类的声明中初始化const数据成员,因为类的对象没被创建时,编译器不知道const数据成员的值是什么。

    const数据成员的初始化只能在类的构造函数的初始化列表中进行。要想建立在整个类中都恒定的常量,应该用类中的枚举常量来实现,或者static cosnt。

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/456.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享