C++成员函数后的const

发表于:2014-4-30 10:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:lt66ds    来源:51Testing软件测试网采编

  以下的每一点会给出代码示例说明
  一、c++成员函数后的const有以下特点:
  1.隐含的this指针以const 类名的类型传递
  2.const 只能声明成员函数,不能声明静态函数
  (static函数不能有const修饰符,const 成员函数是包含this指针的,这明显不被static函数允许)
  3.const 成员函数不能修改对象的任意非静态成员
  4.const 成员函数不能调用非const 成员函数
  二、另外,const对象与const成员函数相关的内容
  1.由const 类名构造的对象只能调用 const方法
  2.const对象的构造函数和析构函数无需用关键字const声明
  1-1
//error C2662: “Text::print”: 不能将“this”指针从“const Text”转换为“Text &”
#include "stdafx.h"
#include "iostream"
using namespace std;
class Text{
public:
void printconst(void)const{cout<<"hello"<<endl;}
void print(void){cout<<"hello"<<endl;}
private:
int k;
};
//上面定义了类Text的一常量对象
int main(void)
{
a.printconst(); //ok
a.print();      //error
//上面a.print()调用是非法的
return 0;
}
  1-2
//error C2272: “printconst”: 静态成员函数上不允许修饰符
#include "stdafx.h"
#include "iostream"
using namespace std;
class Text{
public:
void static printconst(void) const{cout<<"hello"<<endl;}
void print(void){cout<<"hello"<<endl;}
private:
int k;
};
int main(void)
{
Text a;
a.printconst();
return 0;
}
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号