合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
# 来源 有些数据是需要共享,但是又不希望别人随意改动,用const来修饰,使其成为常量 # 常对象 ## 特点 数据成员受到保护,不可改变 必须有初值 不可调用该常对象中的非const类型的成员函数,避免修改该常对象中的数据成员 ## 定义方式 const 类名::对象名(实参列表) 类名 const 对象名(实参列表) # 常成员函数 ## 特点 可以访问数据成员,但是不允许修改 ## 定义方式 成员函数 const # 常数据成员 ## 特点 常对象中的数据成员,都是常数据成员,不能被改变,只能在构造函数中赋值 # 规律 | **数据成员** | **非**const成员函数 | **const**成员函数 | | --- | --- | --- | | **非const成员** | **可以引用**,**也可以改变值** | **可以引用**,**但不可以改变值** | | **const数据成员** | **可以引用**,**但不可以改变值** | **可以引用**,**但不可以改变值** | | **const对象数据成员** | **不允许引用** **和改变值** | **可以引用**,**但不可以改变值** | ## 指针常量 将指针声明为常量,指针值始终不变,指向不变,不可通过该指针,改变值 ## 定义方式 类名 \*const 指针变量名=对象地址 ## const变量小结 | **形参** | **实参** | **合法否** | **改变指针所指向的变量**(**对象**)**的值** | | --- | --- | --- | --- | | **指向非const型变量(对象)的指针** | **非const型变量(对象)的地址** | **合法** | **可以** | | **指向非const型变量(对象**)**的指针** | **const型变量(对象)的地址** | **非法** | **/** | | **指向const型变量(对象)的指针** | **const型变量(对象)的地址** | **合法** | **不可以** | | **指向const型变量(对象)的指针** | **非const型变量(对象)的地址** | **合法** | **不可以** | | 形式 | 含义 | | --- | --- | | **Time const t1;或const Time t1** | **t1是常对象,其值在任何情况下都不能改变** | | **void Time∷fun( )const** | **fun是Time类中的常成员函数,可以引用,但不能修改本类中的数据成员** | | **Time \* const p;** | **p是指向Time类对象的常指针,p的值(即p的指向)不能改变** | | **const Time \*p;** | **p是指向Time类常对象的指针,其指向的类对象的值不能通过指针来改变** | | **Time &t1=t;** | **t1是Time类对象t的引用,二者指向同一段内存空间** | ~~~ #include <iostream> using namespace std; ​ class Time { public:   Time(int,int,int);       int hour;       int minute;       int sec; }; ​ Time∷Time(int h,int m,int s) //定义构造函数 { hour=h;   minute=m;   sec=s; } ​ void fun(Time &t)   //形参t是Time类对象的引用 { t.hour=18; }     int main( ) { Time t1(10,13,56);     // t1是Time类对象   fun(t1);                         //实参是Time类对象,可以通过引用来修改实参t1的值   cout<<t1.hour<<endl; //输出t1.hour的值为18   return 0; } ~~~