码迷,mamicode.com
首页 > 编程语言 > 详细

C++中的const

时间:2019-11-04 21:43:27      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:地址   全局   改变   cos   初始   参数初始化   cout   类外定义   main   

关键字const  

用const修饰的东西,初始化后就无法改变,用于保护数据

常对象

类名 const 对象名[实参表]

const 类名 对象名[实参表]

A const a()

const A a()

常成员数据 const 数据类型 数据名 const int a
常成员函数 类型名 函数名(参数表)const

int a()const{}

pubic int a()const{}

常指针 类名 * const 指针名

A * cosnt p

A * const p=&a;

指向常对象的指针 const 类型 * 指针名 const A *p

构造函数不能用const修饰

参数表只能构造函数使用

常对象必须定义时就初始化,之后就不变了。类的常对象,除了创建时自动用构造函数,销毁时自动用析构函数外,它只能调用常成员函数

常成员数据的初始化只能通过构造函数的参数表进行初始化,如果没有初始化,会报错,初始化后就无法更改

class Box   //长方体类
{
//补充2个成员函数使程序可以执行
// 在此处补充你的代码
/**
* 注意:构造函数不能使用const修饰
* const数据成员只能在构造函数的初始化表中初始化
* const成员函数中不允许修改任何数据成员的值,但可以使用他们
* const对象只允许调用const成员函数
*/
public :
     Box(int a,int b,int c) :length(a),width(b),height(c){}//使用构造函数的参数初始化表进行常成员数据的初始化
     int area()const
    {
        int a=(length*width+length*height+width*height)*2;//函数自己定义的变量
        kk=58;//全局非const变量
        return kk;
    }

private:
    const int length; //
    const int width; //
    int height; //
};

int main()
{
const Box b(1, 1, 1);
cout << b.area() << endl; //输出表面积  如果area不是常成员函数,就不能调用
return 0;
}

 

常成员函数不能修改任何成员数据的值,但可以直接使用,只是不能用类里面定义的成员数据,类外定义的全局非const变量可以改,函数内自己定义的变量可以改

常指针 保护指针 指向变量后指针存的地址无法更改,指针指向的变量可以改变无法指向常变量 

int a=0;                                         const int a=0;
int *const p=&a;                              int *const p=&a; //会报错,不能指向常变量
a=9;//变量可以改变
*p=9;//报错,不能通过指针改变变量的值

int b=5;
p=&b;//会报错,不能更改指向

指向常变量的指针,不保护指针,它可以指向非const修饰的变量防止非const变量被通过指针修改

int a=0;                                                               const int a=0;
const int *p=&a; //可以指向变量                           const int *p=&a; //可以指向常变量
a=9;//不报错,变量可以改变                                a=9;//报错,常变量不能改变
*p=9;//报错,不能通过指针改变变量的值            *p=9;//报错,不能通过指针改变变量的值
int b=5;                                                                 int b=5;
p=&b;//不会报错,能更改指向                             p=&b;//不会报错,能更改指向

无论是常指针还是指向常变量的指针,都不能通过指针改变量的值

C++中的const

标签:地址   全局   改变   cos   初始   参数初始化   cout   类外定义   main   

原文地址:https://www.cnblogs.com/xingers/p/11794785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!