有关C++继承的两个有关问题想
有关C++继承的两个问题想请教大家
问题一:一个类的成员函数中能调用另一个类的公有成员函数吗?
比如:
class A
{
public:
f(x);
}
class B
{
public:
g(x);
}
A::f(x)
{
g(x);
} 程序写的不对,但是意思是这样子,不知道这样调用行不?????
问题二:“子类和父类在同一个包中时,子类可以继承父类的除private属性的所有方法和成员变量,当子类与父类不在同一个包中时,子类只能继承父类的protected和public属性的成员变量和方法。”这句话中“同一个包”是什么意思呀????另外它说的“除private属性”那不就是“protected和public属性”吗?这两种说法不就一个意思吗????
------解决方案--------------------
1、你A没有继承B,所以不能调用B中的g
2、包是Java的概念,C++没有这一说法。
仅供参考:
------解决方案--------------------
如果你问的是Java,应该到Java板块,还有最好看下《Thinking in Java》。
包有点类似于C++的命名空间,又有些不同,简单的说也可以认为是放class的文件夹,不过Java的包有自己的访问权限的问题,你可以了解下。
问题一:一个类的成员函数中能调用另一个类的公有成员函数吗?
比如:
class A
{
public:
f(x);
}
class B
{
public:
g(x);
}
A::f(x)
{
g(x);
} 程序写的不对,但是意思是这样子,不知道这样调用行不?????
问题二:“子类和父类在同一个包中时,子类可以继承父类的除private属性的所有方法和成员变量,当子类与父类不在同一个包中时,子类只能继承父类的protected和public属性的成员变量和方法。”这句话中“同一个包”是什么意思呀????另外它说的“除private属性”那不就是“protected和public属性”吗?这两种说法不就一个意思吗????
------解决方案--------------------
1、你A没有继承B,所以不能调用B中的g
2、包是Java的概念,C++没有这一说法。
仅供参考:
class B
{
public:
void g(int x);//写的时候注意返回值类型,参数类型什么的
};//结尾;别忘了
class A : public B //继承B
{
public:
void f(int x);
};
void A::f(int x)
{
g(x);
}
------解决方案--------------------
如果你问的是Java,应该到Java板块,还有最好看下《Thinking in Java》。
包有点类似于C++的命名空间,又有些不同,简单的说也可以认为是放class的文件夹,不过Java的包有自己的访问权限的问题,你可以了解下。