随笔-145  评论-173  文章-70  trackbacks-0

#include <iostream>
using namespace std;

class A{
public:
 static int a;
};
int A::a= 25;
class B:public A{
public:
 void print(){
  cout << B::a << endl;
 }
};
int main()
{
 B b;
 b.print();
}

说明派生类可以访问基类的成员…………
显示的指定出来就可以了…………


下面来个更一般的。
#include <iostream>
using namespace std;

class A{
public:
  int a;
  A(int x):a(x) {}
};

class B:public A{
public:
 void print(){
  cout << B::a << endl;
 }
 B(int x):A(x){} //基类定义了一个有参的构造函数时,派生类必须定义构造函数
};
int main()
{
 B b(4);
 b.print();
}
可以看到,派生类会继承基类的成员,OK(谁都知道),可以访问基类的成员(前提条件是需要相应的权限)。
也就是说,即使基类的成员对派生类不可见,也依然是派生类的成员。继承是也…………

posted on 2010-01-11 13:51 deercoder 阅读(904) 评论(6)  编辑 收藏 引用

评论:
# re: 派生类访问基类成员 2010-01-11 18:22 | Sunshine Alike
你是想表达访问静态类成员的意思吧  回复  更多评论
  
# re: 派生类访问基类成员 2010-01-11 23:33 | 刘畅
@Sunshine Alike
我是想说的派生类是可以访问基类的成员的,即使不是静态的成员。
上面的那个只是为了说明方便。
#include <iostream>
using namespace std;

class A{
public:
int a;
A(int x):a(x) {}
};

class B:public A{
public:
void print(){
cout << B::a << endl;
}
B(int x):A(x){} //基类定义了一个有参的构造函数时,派生类必须定义构造函数
};
int main()
{
B b(4);
b.print();
}  回复  更多评论
  
# re: 派生类访问基类成员 2010-01-12 18:40 | Sunshine Alike
@刘畅
B继承A之后自己也有int a这个成员,为什么不能访问  回复  更多评论
  
# re: 派生类访问基类成员 2010-01-12 23:43 | 刘畅
@Sunshine Alike
如果是私有的话就不能访问。  回复  更多评论
  
# re: 派生类访问基类成员 2010-01-13 11:22 | Sunshine Alike
@刘畅
私有不代表没有,只是访问级别上的保护
派生类中会包含所有基类成员,但会根据访问级别做不同的处理  回复  更多评论
  
# re: 派生类访问基类成员 2010-01-13 12:10 | 刘畅
@Sunshine Alike
这个我知道,你可以看看我的这个帖子,上面的疑问现在还没有解决呢。
利用友元访问基类的私有成员。


http://www.cppblog.com/deercoder/archive/2010/01/12/105530.html  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理