继承中子类定义了与父类相同的成员变量的处理方法

new_student_ 2012-10-18 01:34:21
函数的功能是输出成员变量的值。
我得到的结论是:
1,如果子类中没有重定义父类的函数,那么不管子类有没有定义与父类相同的成员变量,所输出的都是父类的成员变量。
2,如果子类中有重定义父类的函数,并且使用的是父类的成员变量,那么所输出的就是父类的成员变量。
3,只有子类中有重定义父类的函数,并且使用的是子类重定义的成员变量,那么输出的才是子类的成员变量。
我不知道我总结的对不对,所以想请问高手,谢谢大家!
...全文
715 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
moyongliu 2013-01-17
  • 打赏
  • 举报
回复
总结的正确。
new_student_ 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:

引用 4 楼 的回复:
引用 3 楼 的回复:

引用 1 楼 的回复:

1,如果子类中没有重定义父类的函数,那么不管子类有没有定义与父类相同的成员变量,所输出的都是父类的成员变量===>函数跟你有没有定义相同变量有什么关系么?

我的意思是说 这个函数的内容就是输出 对象所调用的成员变量 我写的程序是:
#include <iostream>……
[/Quote]
引用跟指针虽然有差别 但是对于我这种初学者来说 也就没啥差别了
漫步者、 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:
引用 3 楼 的回复:

引用 1 楼 的回复:

1,如果子类中没有重定义父类的函数,那么不管子类有没有定义与父类相同的成员变量,所输出的都是父类的成员变量===>函数跟你有没有定义相同变量有什么关系么?

我的意思是说 这个函数的内容就是输出 对象所调用的成员变量 我写的程序是:
#include <iostream>
using namespac……
[/Quote]
不用指针,那就用引用吧
new_student_ 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:

引用 1 楼 的回复:

1,如果子类中没有重定义父类的函数,那么不管子类有没有定义与父类相同的成员变量,所输出的都是父类的成员变量===>函数跟你有没有定义相同变量有什么关系么?

我的意思是说 这个函数的内容就是输出 对象所调用的成员变量 我写的程序是:
#include <iostream>
using namespace std;
class f……
[/Quote]
我不想用多态,因为这样还要引入指针,更容易混了 ,我就想看看继承下的调用这个函数所输出的成员变量值
漫步者、 2012-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

1,如果子类中没有重定义父类的函数,那么不管子类有没有定义与父类相同的成员变量,所输出的都是父类的成员变量===>函数跟你有没有定义相同变量有什么关系么?

我的意思是说 这个函数的内容就是输出 对象所调用的成员变量 我写的程序是:
#include <iostream>
using namespace std;
class father
{
pu……
[/Quote]

很简单吗,直接在父类中把你这个方法virtual一下,然后通过多态的方式就可以完成。
new_student_ 2012-10-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

1,如果子类中没有重定义父类的函数,那么不管子类有没有定义与父类相同的成员变量,所输出的都是父类的成员变量===>函数跟你有没有定义相同变量有什么关系么?
[/Quote]
我的意思是说 这个函数的内容就是输出 对象所调用的成员变量 我写的程序是:
#include <iostream>
using namespace std;
class father
{
public:
int a;
father(){a=3;};
void print(){cout<<a<<father::a;}
};

class son:public father
{
public:

son(){a=4;}
void print(){cout<<a<<father::a<<son::a;}
};

int main()
{
son s1;
s1.print();
return 0;
}
我想通过函数的重写来确定到底是用的哪个类的成员函数
一叶之舟 2012-10-18
  • 打赏
  • 举报
回复
不管是子类还是父类的函数,最好加上类名称显示调用。
漫步者、 2012-10-18
  • 打赏
  • 举报
回复
1,如果子类中没有重定义父类的函数,那么不管子类有没有定义与父类相同的成员变量,所输出的都是父类的成员变量===>函数跟你有没有定义相同变量有什么关系么?

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧