C++ const总结
来源:互联网 发布:网络安全技术徐剑 编辑:程序博客网 时间:2024/06/06 10:41
const是代码中的常客。Today,我就略加总结。
主要通过几段代码讲解,
Code sec1:
#include<stdio.h>int funa(const int& a){printf("%d\n",a);}int funb(int& a){printf("%d\n",a);}int func(int a){printf("%d\n",a);}int fund(const int a){printf("%d\n",a);}int main(){int m=3;const int n=4;funa(m);funa(n);funa(5);funb(m);funb(n);funb(5);func(m);func(n);func(5);fund(m);fund(n);fund(5);}ok,代码首先定义了4个函数,funa,funb,func,fund,形参分为引用和非引用两类,且一次搭配const进行测试。
结论:只有进行引用传递时,const生效,const类型实参不能传给非const类型形参,反之可以。基本类型常量属于const类型。
Code sec2:
#include<stdio.h>#include<cstring>using namespace std;int funa(const char* a){printf("%s\n",a);}int funb(char* a){printf("%s\n",a);}int main(){char *p=new char[4];strcpy(p,"atm");funa(p);funa("atm");funb(p);funb("atm");}ok,代码首先定义了两个函数funa和funb,形参分别为const char*和char*。
结论:指针传递时,const生效,结论同上。
Code sec3:
#include<stdio.h>class Stu{public:Stu(){};void say() const;};void Stu::say() const{printf("i am tom\n");}int main(){Stu stu;stu.say();}ok,代码定义了一个简单的stu类。
结论:const放在成员函数声明后,表示函数不会改变对象。
Code sec4:
#include<stdio.h>#include<cstring>#include<iostream>class TestStr{public:char *str;TestStr();~TestStr();char &operator[](int i);const char &operator[](int i) const;friend ostream &operator<<(ostream &os,const TestStr &st);};TestStr::TestStr(){str=new char[4];using std::strcpy;strcpy(str,"c++");}TestStr::~TestStr(){delete[] str;}char &TestStr::operator[](int i){cout<<"! const invoked"<<endl;return str[i];}ostream &operator<<(ostream &os,const TestStr &st){return os<<st.str<<endl;}const char &TestStr::operator[](int i) const{cout<<"const invoked"<<endl;return str[i];}int main(){TestStr tsr;cout<<tsr;cout<<tsr[0]<<endl;tsr[0]='b';cout<<tsr;const TestStr ctsr;cout<<ctsr;cout<<ctsr[0]<<endl;//ctsr[1]='d';cout<<ctsr;}ok,代码定义了一个简单的TestStr类,成员函数包括构造函数、析构函数并且重写了‘《’和‘[]’运算符。
结论:下面是结果,你可能已经看到了,const对象使用下标时调用const方法,而非const对象,则调用非const方法。
c++! const invokedc! const invokedb++c++const invokedcc++
0 0
- C++const用法总结
- C++const用法总结
- C++const用法总结
- C++const用法总结
- C++const用法总结
- C++const用法总结
- C++const用法总结
- c++->const用法总结
- C++const总结
- C++:const用法总结
- C++const用法总结
- C++const总结
- C++-const 总结
- C/C++ const总结
- <C++> const总结
- const 用法总结(C++)
- C语言Const用法总结
- C语言总结之const
- Socket编程(TCP)
- jquery ajax success beforeSend
- OpenGL配置
- 分析表的事务代码
- The proxy server received an invalid response from an upstream server.(错误原因)
- C++ const总结
- Java POI读取/导出Excel数据
- 常用RGB颜色表
- android.os.NetworkOnMainThreadException异常
- setEvent()
- Go语言之父谈Go:大道至简
- 苹果iPhone 5s延续了上一代iPhone5的经典设计
- c++ map使用
- sed命令详解