C++之函数和const
来源:互联网 发布:眼镜店软件 编辑:程序博客网 时间:2024/06/07 02:42
void func() const:
这种类型的const必须和类对象联系在一起,即存在this指针。下面是错误的使用:
int func() const //error编译无法通过{int a = 10;return a;}int main(int argc, char *argv[]){int a;a = func();a = 20;cout<<a<<endl; return 0;}
实际上,函数体形参后跟着的const关键字是特别修饰隐式this形参的:
隐式this形参:
class student{public:int func() const;private:int std_count;};int student::func() const{int a = 10;return a;}int main(int argc, char *argv[]){int a;student sd;a = sd.func();a = 20;cout<<a<<endl; return 0;}
在上述代码中,在调用 sd.func(); 时,其实被编译器重写成 student::func(&sd), &sd即可理解为this指针指向的地址; 而关键字const的作用则是修饰该对象不可修改,this指针指向的对象(sd)不可被修改。
int student::func() const{int a = 10;this->std_count = 10;return a;}
如上代码尝试修改const修饰下对象的std_count属性,编译将报错:error : l-value specifies const object
const int func() :
const用于修饰func函数的返回值,其返回值是const类型。
char arr[] = "fefsdf";const char* func() {return arr;}int main(int argc, char *argv[]){char* arr1;arr1 = func();arr1 = "feasdf"; //error: '=' : cannot convert from 'const char *' to 'char *'cout<<arr1<<endl; return 0;}
注意:如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。
例如不要把函数int GetInt(void) 写成const int GetInt(void)。
int func(const int):
修饰形参为const类型。
- C++const函数和const对象
- C++之函数和const
- C/C++之#define和const区别
- C和指针之const、#define、volatile
- const对象和const函数
- const对象和const函数
- const对象和const函数
- C++:函数名后加const
- c++const函数
- c++const成员函数
- C++:函数名后加const
- C语言之const常量(摘自C和指针)
- 函数重载之const
- 函数重载之const
- 函数重载之const
- c/c++之const
- C语言之const
- C语言之const
- Android设计中的.9.png,某个方向上拉伸
- MFC 中Invalidate的使用
- pl /sql学习笔记(一) helloword
- vimdiff使用技巧 (copied)
- 微信公众平台开发--快递查询
- C++之函数和const
- Unicode伟大的创想
- Java图形用户界面设计
- linux 如何杀死僵尸进程
- 制作IOS ANE的基本流程
- php:查找页面上的所有链接
- ubuntu 安装好后
- 【Java】ClassLoader简介
- .ipa文件的生成