首先创建一个类,方便介绍常对象以及常方法
class Test
{
public:
void Test1(int a)const //常方法 其中this指针由Test* const--> const Test*const
{
std::cout<<"Test()const"<<std::endl;
ma = a; //error 常方法不能修改普通成员变量的值
int md = a; //可以访问a,但不能修改a的值
int me = mc; // const函数访问const成员变量
}
void Test2()
{
int mf = mc; //普通函数访问const成员变量
std::cout<< "Test2(int,int)" <<std::endl; //输出该函数
}
Test(int a,int b,int c):ma(a),mb(b),mc(c);//构造函数(常成员只能由初始化表进行初始化)
{
std::cout<< "Test(int)" <<std::endl; //输出该函数
}
private:
int ma;
int mb;
const int mc; //C++中常变量必须初始化(类中的常变量可以使用构造函数的初始化表进行初始化)
}
int main()
{
Test tmp(10,20,30); //调用构造函数生成对象tmp
tmp.Test1(10); //const函数访问常数据成员变量
tmp.Test2(); //普通函数访问常数据成员变量
return 0;
}
常对象:常对象只能调用该类中的常成员函数
常方法:
①可以访问对象中的常成员,也可以访问普通成员
②该方法不允许修改任何数据的值
常数据成员:
①只能通过构造函数的初始化表就行初始化,其他方式皆不允许
②可以被const成员函数访问,也可以被该类中普通函数访问(但不允许修改其中的值)
本文深入探讨了C++中的常对象和常方法概念,解析了它们如何限制对象状态的修改,以及如何正确使用常数据成员。通过具体代码示例,详细解释了常方法的访问权限和行为限制,以及常数据成员的初始化规则。
75万+

被折叠的 条评论
为什么被折叠?



