Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;遗传与多态性 作为java程序员和C++ NoOB,我在C++中处理继承的时候很困难。现在,我有这个: class Parent { public: Parent() {} virtual std::string overrideThis() { } }; class Child : public Parent { public: std::string attribute; Child(const std::string& attribute) : attribute(attribute) { } std::string overrideThis(){ std::cout << "I'm in the child" << std::endl; return attribute.substr(1, attribute.size()-2); } }; 类父类{ 公众: 父(){} 虚拟std::字符串重写此(){} }; 类子:公共父类{ 公众: std::字符串属性; 子(const std::string&attribute):属性(attribute){} std::string重写此(){ std::cout_C++_Pointers_Inheritance_Polymorphism - Fatal编程技术网

C++;遗传与多态性 作为java程序员和C++ NoOB,我在C++中处理继承的时候很困难。现在,我有这个: class Parent { public: Parent() {} virtual std::string overrideThis() { } }; class Child : public Parent { public: std::string attribute; Child(const std::string& attribute) : attribute(attribute) { } std::string overrideThis(){ std::cout << "I'm in the child" << std::endl; return attribute.substr(1, attribute.size()-2); } }; 类父类{ 公众: 父(){} 虚拟std::字符串重写此(){} }; 类子:公共父类{ 公众: std::字符串属性; 子(const std::string&attribute):属性(attribute){} std::string重写此(){ std::cout

C++;遗传与多态性 作为java程序员和C++ NoOB,我在C++中处理继承的时候很困难。现在,我有这个: class Parent { public: Parent() {} virtual std::string overrideThis() { } }; class Child : public Parent { public: std::string attribute; Child(const std::string& attribute) : attribute(attribute) { } std::string overrideThis(){ std::cout << "I'm in the child" << std::endl; return attribute.substr(1, attribute.size()-2); } }; 类父类{ 公众: 父(){} 虚拟std::字符串重写此(){} }; 类子:公共父类{ 公众: std::字符串属性; 子(const std::string&attribute):属性(attribute){} std::string重写此(){ std::cout,c++,pointers,inheritance,polymorphism,C++,Pointers,Inheritance,Polymorphism,程序具有未定义的行为,因为正在调用的函数-Parent::overrideThis不会返回,尽管它应该返回 调用Parent类中的函数是因为Parent-childObject=*(child);切片您试图复制的对象-新对象childObject的类型为Parent,而不是child 要使多态性发挥作用,您需要使用指针或引用: Parent* childObject1 = child; Parent& childObject2 = *child; childObject1->ove

程序具有未定义的行为,因为正在调用的函数-
Parent::overrideThis
不会返回,尽管它应该返回

调用
Parent
类中的函数是因为
Parent-childObject=*(child);
切片您试图复制的对象-新对象
childObject
的类型为
Parent
,而不是
child

要使多态性发挥作用,您需要使用指针或引用:

Parent* childObject1 = child;
Parent& childObject2 = *child;
childObject1->overrideThis();
childObject2.overrideThis();

我如何在引用上调用overrideThis()(如果这是一个幼稚的问题,那么很抱歉xD)我可以用哪种方式调用overrideThis()?也不允许我做childObject。overrideThis()关于
dynamic\u cast
?@IgnacioVazquez Abrams关于它呢?
Child *child = new Child(value);
Parent childObject = *(child);
std::cout << "I'm trying this: " << childObject.overrideThis() << endl;
Parent* childObject1 = child;
Parent& childObject2 = *child;
childObject1->overrideThis();
childObject2.overrideThis();