const应用2

之前总结了一篇const相关的文章“ const使用小结”,在这里做点补充。
 
1.const可用于函数重载,见下例中的类成员函数:void out()和void out() const;
2.函数后跟着const,表示:const的函数不能对其数据成员进行修改;如果想更改函数内数据成员,使用mutable 。
3.const函数中,不能对其数据成员进行修改,但可以对其指针成员的“指向数据”修改;
4.const的对象,不能引用非const的成员函数;下列中const对象只会调用const函数;
5.类成员const常量(引用)的初始化只能在构造函数初始化列表中初始化,而不能在构造函数函数体内初始化。

详见代码:

#include <iostream>
using namespace std;

class base
{
public:
   int *p_;
   int **pp_;
};

class derived:public base
{
    int num;
	const int num2;
	int *p_test;
public:
    derived():num2(10)//const常量的初始化只能在构造函数初始化列表中初始化
	{
        int a =10;
        num = a;
        p_test = &a;		
		
		p_ = new int;
        pp_ = &p_;	
    }
    void out()
	{
	    cout<<__LINE__<<": "<<__func__<<endl;
	    num++;
        cout<<"num = "<<num<<endl;	
    }
	//const用于函数重载
    void out() const
	{
	    cout<<__LINE__<<": "<<__func__<<endl;
		//const内的变量不能赋值
	    //num++;
		
		int &a = **pp_;
		//对指针指向的地址地方赋值
        a = 20;
		cout<<"*p = "<<*p_<<endl;
		cout<<"**pp_ = "<<**pp_<<endl;
		
		//对指针指向的数据赋值
 		*p_test = 30;
		cout<<"*p_test = "<<*p_test<<endl;
    }
};

int main(int argc, char* argv[])
{
    derived d1;
    d1.out();
 	
    const derived d2;	
	//const的对象,只会调用const函数。
    d2.out();
  	
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值