现在的位置: 首页 > 综合 > 正文

C++ primer 笔记:继承与静态成员

2013年03月16日 ⁄ 综合 ⁄ 共 807字 ⁄ 字号 评论关闭

如果基类定义了static成员,则整个继承层次中中只有一个这样的成员。无论从基类派生出多少个派生类,每个static成员只有一个。

static成员遵循常规访问控制:若果成员在基类中为private,则派生类不能访问它。假定可以访问成员,则既可以通过基类访问static成员,也可以通过派生类访问static成员。

验证:

#include <iostream>

using namespace std;

class base
{
public:
	base() {}
	static int public_val;
private:
	static int private_val;
};

int base::public_val = 1;
int base::private_val = 2;

class derived: public base
{
public:
	derived() {};
	void fun(const base &, const derived &);
};

void derived::fun(const base &base_obj, const derived &derived_obj)
{
	cout << base::public_val << endl;
	cout << base::private_val << endl; //error

	cout << derived::public_val << endl;
	cout << derived::private_val << endl;//error

	cout << base_obj.public_val << endl;
	cout << base_obj.private_val << endl;//error

	cout << derived_obj.public_val << endl;
	cout << derived_obj.private_val << endl;//error
}
int main()
{
	base b;
	derived d;

	return 0;
}

error表示:因为该成员为private,不能访问。

抱歉!评论已关闭.