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/
青青园中葵,朝露待日晞。
阳春布德泽,万物生光辉。
常恐秋节至,焜黄华叶衰。
百川东到海,何时复西归?
少壮不努力,老大徒伤悲!