c++ - 基类成员没有期望值
问题描述
我正在学习 C++ 并且是它的初学者。我在理解为什么会出现逻辑错误或运行时错误时遇到了一些麻烦。谁能解释我做错了什么?
我已经知道了一个解决方案,方法是删除类 A 和 B 中的函数并简单地在构造函数中定义它,但如果这是正确的方法,为什么我不能像我所做的那样在其他函数中初始化它?
#include <stdlib.h>
#include<iostream>
using namespace std;
class A
{
protected:
int x;
public:
void Init()
{
x = 10;
}
};
class B
{
protected:
int x;
public:
void Init()
{
x = 20;
}
};
class C: public A, public B
{
public:
void Test()
{
cout << "A's x is " << A::x;
cout << "\nB's x is " << B::x;
}
};
int main()
{
C c;
c.Test();
return 0;
}
我期待一个正常的结果,我通常会在 java 中使用“this”函数获得。
IE
A's x is 10
B's x is 20
但我得到的是
A's x is 8
B's x is 50
解决方案
既没有A::Init()
也没有B::Init()
被调用。A::x
并且B::x
未初始化。
推荐阅读
- sbt - SBT 使用依赖树并被驱逐
- python - 如何摆脱 Vs 代码中的 python manage.py 权限被拒绝问题?
- python - 如何在python中重命名带有日期时间戳的文件?
- php - 如何在表单提交时重定向到 WordPress 中新创建的帖子?
- ios - UITextView 放置在 UIScrollView 中时如何实现响应式自动滚动?
- c# - EPPLUS 使用 loadfromcollection 与合并的单元格
- xcode - 递归地将 -arch 选项应用于 Xcode 项目的所有依赖项
- sql - 将字符串列转换为多个二进制列
- r - S4 类中的覆盖方法
- java - 如何使用 java 在 postfix 的 milter 中复制电子邮件