C++学习之对类中的成员函数的定义和声明最后添加一个const作用

1.const修饰的成员函数只能调用const修饰的成员函数,且不能修改数据成员变量的值。

void CTest::func()
{
    std::cout << a << std::endl;
    std::cout << a++ << std::endl;
    std::cout << b << std::endl;
    warnf("this is func!\n");
}

void CTest::func1() const
{
    warnf("this is func1!\n");
}

void CTest::func2() const

{
    func();                                  //错误,const成员函数不能调用非const成员函数
    func1();                            //正确,const成员函数只能调用const成员函数
    
    std::cout << a << std::endl;        //正确,const成员函数可以调用非const成员变量,但不能修改其值;
    std::cout << a++ << std::endl;      //错误, const成员函数不能修改成员变量值
    std::cout << b << std::endl;        //正确,const成员函数可以调用const成员变量,但值不能改变

    warnf("this is func2\n");
}

2.const修饰的类对象只能调用const修饰的成员函数。

{
    CTest t;         //非const类对象
    const CTest ct;   //const类对象
    
    ct.func();       //错误,const类对象只能调用const成员函数
    ct.func2();        //正确,func2是const成员函数

    t.func();        //正确,非const类对象,可以调用const和非const成员函数
    t.func2();        //正确,非const类对象,可以调用const和非const成员函数
}

 

3.const修饰的类对象可以调用非const修饰的数据成员变量,也可以调用const修饰的成员变量,但是其值是不能被修改的;

 

{
CTest t; //非const类对象
const CTest ct; //const类对象

//a 是非const成员变量;
//b 是const成员变量;
ct.a; //正确,const类对象可以调用非const成员变量,但不能修改其值
ct.a++; //错误,const类对象可以调用非const成员变量,但不能修改其值
ct.b; //正确

 

t.a; //正确
t.b; //正确
return 0;
}

 

http://www.crifan.com/

posted @ 2018-06-19 15:00  唯一诺  阅读(587)  评论(0编辑  收藏  举报