###解释一下吧
今天突发奇想(有时候突发奇想会害死人),C++中通过子类对象能否拿到父类对象中的成员呢?我想基本的继承是允许这么干的吧。但凡是应该写程序试一试才知道,于是就写了上面那个程序。
(犯二的开始:)通过输出结果可知,是拿不到的。莫非子类对象有自己独立的内存地址?想的越来越远。
结果请同事来释疑,同事定睛一看,擦,你这是啥呀,分明是两个对象,有何意义?
额,有何意义!!!
他还让我在看看《C++ Primer》,我顿时感觉我学C++都学狗屁了。。。
| #include <iostream> | |
| class Father | |
| { | |
| public: | |
| Father():i_(2){} | |
| ~Father(){} | |
| int GetIValue(){return i_;} | |
| void SetIValue(int i){i_ = i;} | |
| protected: | |
| int i_; | |
| }; | |
| class Son : public Father | |
| { | |
| public: | |
| Son():Father(){} | |
| ~Son(){} | |
| }; | |
| int main() | |
| { | |
| Father *father = new Father; | |
| std::cout << "Father:" << father->GetIValue() << std::endl; | |
| Son *son = new Son; | |
| std::cout << "Son:" << son->GetIValue() << std::endl; | |
| // change father's value | |
| father->SetIValue(5); | |
| std::cout << "Father(changed):" << father->GetIValue() << std::endl; | |
| std::cout << "Son(changed):" << son->GetIValue() << std::endl; | |
| return 0; | |
| } |
###解释一下吧
今天突发奇想(有时候突发奇想会害死人),C++中通过子类对象能否拿到父类对象中的成员呢?我想基本的继承是允许这么干的吧。但凡是应该写程序试一试才知道,于是就写了上面那个程序。
(犯二的开始:)通过输出结果可知,是拿不到的。莫非子类对象有自己独立的内存地址?想的越来越远。
结果请同事来释疑,同事定睛一看,擦,你这是啥呀,分明是两个对象,有何意义?
额,有何意义!!!
他还让我在看看《C++ Primer》,我顿时感觉我学C++都学狗屁了。。。
Please...