您的位置:首页 > 编程语言 > C语言/C++

C++语法基础--恢复继承成员的访问级别,默认继承保护级别,友元关系与继承,继承与静态成员

2013-07-20 19:43 876 查看
1.恢复继承成员的访问级别(using 声明)

*派生类可以恢复继承成员的访问级别,但是不能使访问级别比基类中原来指定的更严格或更宽松



Example:

class base

{

public:

int x;



};



class private_derived:private base

{

public:

using base::x;



};

int main()

{


private_derived pd;


pd.x=1;// 如果去除using base::x,则出错: 'int base::x' is inaccessible


cout<<pd.x<<endl;//1

}

2.默认继承保护级别

*class保留字定义的派生类默认具有private继承

*struct保留字定义的派生类默认具有public继承



Example:



class base

{



};



class private_derived: base

{



};



等效于

class private_derived: private base

{



};

3.友元关系与继承

*友元关系不能继承,基类的友元对派生类的成员没有特殊访问权限

Example:

class base

{

friend class frd;

public:

base(int i):x(i)

{

}

private:

int x;



};



class derived: public base

{


public:


derived(int j):base(j)

{

}

private:

int y;

};

class frd

{

public:

void fun1(base b)

{

cout<<"base:: "<<b.x<<endl;

}

void fun2(derived d)

{

//cout<<"derived:: "<<d.y<<endl;//error, 'int derived::y' is private

}

};

int main()

{


base b(1);


derived d(2);


frd f;


f.fun1(b);//base:: 1



return 0;

}

4.继承与静态成员

*如果基类定义了static成员,则整个继承层次中只有一个这样的成员

*static成员遵循常规访问控制

Example:

class base

{



public:

static void fun()

{

cout<<"static base::fun()"<<endl;

}



};



class derived: public base

{



};



int main()

{



derived d;

derived *pd=new derived;

derived::fun();//static base::fun()


d.fun();//static base::fun()


pd->fun();//static base::fun()



return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐