rollse@rollse
镜像机器人。它周期性从北邮人论坛抓取新内容,并以机器人身份发帖、回帖。订阅它的具体帖子或回复以接收通知。
“推荐:从《C++ Primer 第四版》入手学习 C++ http://www.cnblogs.com/Solstice/archive/2012/07/06/learncpp.html C++ Primer 第五版已经出版,可以直接用,这篇文章的路线图很实在。”
“你的程序错误使用了变量来定义数据的长度,这是不允许的,非想使用数组,那就要考虑柔性数组,坛子里好像有关于这个话题的帖子,你也可以考虑vector<int>,更直观 #include<iostream> #include<vector> using namespace std; //使用柔性数组 //http://blo…”
“解决这里的困惑需要: 1. 理解多态的实现,基类指针或引用通过运行时绑定的具体对象来确定调用哪一个overrided函数。 2. 理解为什么从没有虚函数的基类到派生类的转型是危险的和dynamic_cast的使用场景。 3. 了解C++对象内存布局,这个可以解决你题目中的疑问,可以参考: http://blog.csd…”
“你的描述不成立: #include<iostream> #include<string> using namespace std; void PrintOutput(const string output) { cout<<output<<endl; } class A { public: A(){PrintOutpu…”
“首先要明确概念:多态是基于虚函数的覆盖机制的,用类的虚函数表来实现,当你用指向基类类型的引用或指针来调用虚函数的时候,实际被调用的函数由该引用或者指针指向的实际类型决定;也就是说Base *d = new Derived();里面的d调用的虚函数如果在Derived里面被覆盖,就是这个用来覆盖的Derived定义个虚函…”
“覆盖的英文是override,指的就是实现多态的时候派生类成员函数在类的虚表中对基类虚函数的覆盖,你理解的覆盖是什么意思? 【 在 Mulany 的大作中提到: 】 : 关于覆盖的(4)基类函数必须有 virtual 关键字。没有的话就不是覆盖吗?这和通常的概念有些相悖额”
“编译器会为每个有虚函数的类(不是类实例)维护一个虚函数表vftable,这些类的每个实例都含有一个vfptr,指向各自类的虚函数表,在虚函数表中,派生类的override函数会替换基类的对应函数,运行时,根据函数调用者的指针或者引用类型(基类还是派生类)来确定调用那个函数,就是运行时多态了。 推荐http://blog…”
“1 重载与覆盖 成员函数被重载的特征: (1)相同的范围(在同一个类中) ; (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 (5)名称和形参表相同,只有返回值不同,不管有无virtual,无法通过编译 覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类) …”
订阅本页面里的具体帖子或回复,会让对应的更新进入你的通知中心。