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

来源:互联网 发布:砺剑出题 网络 编辑:程序博客网 时间:2024/04/30 09:14

如果基类定义了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; //errorcout << derived::public_val << endl;cout << derived::private_val << endl;//errorcout << base_obj.public_val << endl;cout << base_obj.private_val << endl;//errorcout << derived_obj.public_val << endl;cout << derived_obj.private_val << endl;//error}int main(){base b;derived d;return 0;}

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

原创粉丝点击