const(一):(转) 一个函数名后面加const表示什么意思
2015-08-13 21:42
435 查看
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常量,这也体现出函数重载的特点。
http://blog.sina.com.cn/s/blog_74cf26810100swj5.html
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常量,这也体现出函数重载的特点。
http://blog.sina.com.cn/s/blog_74cf26810100swj5.html
相关文章推荐
- gcc简单命令记录
- CodeForces-554B Ohana Cleans Up
- JS学习十三天----子集和扩展
- ACM竞赛编程中几点要注意的。
- 网格分割后,边界点的获取方法
- 九度oj 1025
- C++中的this指针
- ios
- iOS开发 -- UIView详解
- 8月13日---用户信息查询
- Scanf输入多个用逗号隔开的字符串
- LeetCode之Construct Binary Tree from Preorder and Inorder Traversal
- vivado error [Labtools 27-2149]
- 说说oracle的 sysdate、trunc函数
- 无题
- [持续更新]JavaScript学习笔记(三)
- 简化IT程序员工作生活的4个窍门
- ODBC数据源管理器 和 三种DSN(还记得是自己用过吗?)
- Learning WCF Chapter 3 Bindings One-Way and Duplex Communication
- 数字器件和模拟器件?