const(一):(转) 一个函数名后面加const表示什么意思
2016-12-13 22:02
288 查看
转自:http://zjw86212.blog.163.com/blog/static/116692085200910394324880/
const用在成员函数后 主要是针对类的const 对象
如:
class Text{
public:
void printconst(void)const{cout<<"hello"<<endl;}
void print(void){cout<<"hello"<<endl;}
private:
int k;
};
const Text a;
//上面定义了类Text的一常量对象
int main(void)
{
a.printconst(); //ok
a.print(); //error
//上面a.print()调用是非法的
return 0;
}
const对象只能调用const成员函数。
const对象的值不能被修改,在const成员函数中修改const对象数据成员的值是语法错误
在const函数中调用非const成员函数是语法错误
这是把整个函数修饰为const,意思是“函数体内不能对成员数据做任何改动”。如果你声明这个类的一个const实例,那么它就只能调用有const修饰的函数。
常成员函数
使用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<<R1<<R2<<endl;
}
void R::print() const
{
cout<<R1<<R2<<endl;
}
void main()
{
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
}
该例子的输出结果为:
5,4
20;52
该程序的类声明了两个成员函数,其类型是不同的(其实就是重载成员函数)。有带const修饰符的成员函数处理const常量,这也体现出函数重载的特点。
const用在成员函数后 主要是针对类的const 对象
如:
class Text{
public:
void printconst(void)const{cout<<"hello"<<endl;}
void print(void){cout<<"hello"<<endl;}
private:
int k;
};
const Text a;
//上面定义了类Text的一常量对象
int main(void)
{
a.printconst(); //ok
a.print(); //error
//上面a.print()调用是非法的
return 0;
}
const对象只能调用const成员函数。
const对象的值不能被修改,在const成员函数中修改const对象数据成员的值是语法错误
在const函数中调用非const成员函数是语法错误
这是把整个函数修饰为const,意思是“函数体内不能对成员数据做任何改动”。如果你声明这个类的一个const实例,那么它就只能调用有const修饰的函数。
常成员函数
使用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<<R1<<R2<<endl;
}
void R::print() const
{
cout<<R1<<R2<<endl;
}
void main()
{
R a(5, 4);
a.print();
const R b(20, 52);
b.print();
}
该例子的输出结果为:
5,4
20;52
该程序的类声明了两个成员函数,其类型是不同的(其实就是重载成员函数)。有带const修饰符的成员函数处理const常量,这也体现出函数重载的特点。
相关文章推荐
- 2016年12月13日学习总结----C语言关键字总结
- PCA的数学原理
- lintcode,报数
- 存储过程
- 如何在Spark2.0.2中启动Ipython Notebook
- Python爬虫学习1--糗事百科
- Android Studio 2.2 使用 OpenCV 的两种方式(傻瓜式教程)
- 第十五周项目四字符串长度
- 1121. Damn Single (25)
- 栈的基本操作
- JAVA安装过程中出现的“javac不是内部或外部指令”的解决方法
- Leetcode 299 Bulls and Cows
- mySql常用笔记记录
- 文本翻译器的点点滴滴
- 第六章-网络可靠性设计
- Android 计时器
- 职责链模式
- 科技英语/专业英语——改错总结【2】
- 如何判断网络连接状态
- 企业站点如何针对性的让搜素引击收录站内图片