类的对象不能直接访问类声明的私有成员变量,否则破坏了信息隐藏的目的。
在C++中,为了防止某些数据成员或成员函数从外部被直接访问,可以将它们声明为private,这样编译器会阻止任何来自外部非友元的直接访问。
私有成员变量的常用访问方法如下:
(1)通过公共函数为私有成员赋值
#include
using namespace std;
class Test
{
private:
int x, y;
public:
void setX(int a)
{
x=a;
}
void
using System;
#region
/*
///
/// 类定义
///
class Person
{
//成员变量
int name;
int height;
//成员方法
void eat()
{
}
}
class Test
{
static void Main()
{
Person baby = new Person(); //对象
baby.name =
Person YaoMin = new Person(); //
其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们
都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份。然而非静态成员变量和非静态成员函数是针对类的对象而言。
然而从本质上来说类的静态成员函数的函数形参中没有默认的this指针,导致不能调用具体实例对象的成员。
下面我们来测试一下:
先在静态成员函数中调用静态成员变量:
#include
using namespace std;
class vpoet
{
public
众所周知的C++中空类的大小为1,但是除了空类之外的其他一些没有成员变量的类的大小,还是有相当一部分开发人员对此有很多不明之处的。
这里我们以如下代码为例:
#include
using namespace std;
class a {};
class b{};
class c :public a{
virtual void fun() = 0;
};
class d :public b, public c{};
int main()
{
cout << sizeof(a) <