可以派生 class 访问基 class 没有基 class 对象的非静态成员
can derived class access base class non-static members without object of the base class
可以派生 class 访问基 class 没有基 class
对象的非静态成员
class base
{
public:
int data;
void f1()
{
}
};
class derived : base
{
public :
void f()
{
base::data = 44; // is this possible
cout << base::data << endl;
}
};
为什么下面的显示错误
class base
{
public:
int data;
void f1()
{
}
};
class derived : base
{
public :
static void f()
{
base::data = 44; // this one shows a error
cout << base::data << endl;
}
};
我在任何网站都找不到答案
在你的第一个例子中
class derived : base
{
void f()
{
base::data = 44;
}
};
f()
不是静态的。它适用于 derived
的对象,其中包括 base
的对象。因此,base::data = 44;
等同于 data = 44;
并且它访问对象的成员。
在第二个例子中
class derived : base
{
static void f()
{
base::data = 44;
}
};
函数f()
是静态的,所以它不能访问任何对象。在那里,base::data = 44;
可能意味着 base
的静态 data
成员。但是因为 data
是非静态的,表达式是错误的。
可以派生 class 访问基 class 没有基 class
对象的非静态成员class base
{
public:
int data;
void f1()
{
}
};
class derived : base
{
public :
void f()
{
base::data = 44; // is this possible
cout << base::data << endl;
}
};
为什么下面的显示错误
class base
{
public:
int data;
void f1()
{
}
};
class derived : base
{
public :
static void f()
{
base::data = 44; // this one shows a error
cout << base::data << endl;
}
};
我在任何网站都找不到答案
在你的第一个例子中
class derived : base
{
void f()
{
base::data = 44;
}
};
f()
不是静态的。它适用于 derived
的对象,其中包括 base
的对象。因此,base::data = 44;
等同于 data = 44;
并且它访问对象的成员。
在第二个例子中
class derived : base
{
static void f()
{
base::data = 44;
}
};
函数f()
是静态的,所以它不能访问任何对象。在那里,base::data = 44;
可能意味着 base
的静态 data
成员。但是因为 data
是非静态的,表达式是错误的。