展开全部
可以。但是没有“对象访问变量”这一说法。
#include<iostream>
using namespace std;
class CTest
{
public:
void fun( void )const
{
cout<< "const function test.\n";
}
};
int main()
{
CTest const ca = CTest();
ca.fun();
}
你说的应该是这个意思:非常成员函数可以访问常成员变量。
#include<iostream>
using namespace std;
class CTest
{
public:
CTest() : m_a( 0 ){}
void fun( void )
{
cout<< m_a <<endl;
}
private:
int const m_a;
};
int main()
{
}
反过来也可以,常成员函数也可以访问非常成员变量。但是,两种情况均不能修改变量,因为一个是常成员函数不能修改变量,而另一种情况是常成员变量不能被修改。
#include<iostream>
using namespace std;
class CTest
{
public:
void fun( void )const
{
cout<< "const function test.\n";
}
};
int main()
{
CTest const ca = CTest();
ca.fun();
}
你说的应该是这个意思:非常成员函数可以访问常成员变量。
#include<iostream>
using namespace std;
class CTest
{
public:
CTest() : m_a( 0 ){}
void fun( void )
{
cout<< m_a <<endl;
}
private:
int const m_a;
};
int main()
{
}
反过来也可以,常成员函数也可以访问非常成员变量。但是,两种情况均不能修改变量,因为一个是常成员函数不能修改变量,而另一种情况是常成员变量不能被修改。
追问
你 ca 访问的是常成员函数啊?
追答
看错了。
CTest const ca = CTest();
直接改成CTest ca;就行了。这就是你说的“非常对象访问常成员函数”这种情况了。
常对象一定是不能访问非常成员函数的,因为编译器不知道你的函数在运行时会不会把常对象给修改了,所以就一定要在编译阶段就阻止你。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询