又是一个难题.(C++) 在virtual函数中调用static函数. 这样做一定不行吗?请指教//bow 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #include <iostream>using namespace std;class Base {public: static int j; static int incr(){ return j++; } virtual void play() const { incr(); cout << "Base::play" << endl; cout << "Base::j="<<j<<endl; }};class Child : public Base {public: int i; static int j; static int incr() { return j++; } Child(int ii = 0) : i(ii) { j = i; } // Override interface function: void play() const { incr(); cout << "Child::play" << endl; cout <<"Child::j="<<j<<endl; }};void TestVirtual(Base& ins) { ins.play();}int Child::j = 0;int Base::j=10;int main() { Child x; TestVirtual(x); // Upcasting return 0;} It's better to change the "j++" to "++j". MFC/对话框 跨类成员调用疑惑 50分求助动态控制声卡 串并口开启与屏蔽 WEB邮件监控啊.麻烦,烦人,恼火 《 VC++技术内幕》和《VC++.NET技术内幕》两本书籍比较 各位1存储过程返回记录集recordcount-1,怎么解决啊? 快速移动窗口的方法?? 如何显示出Toolbar资源? 没有分,不好意思,不过还是要请教一下 最简单问题,系统不识别SD_BOTH 哪位知道如何取得this指针?(好像太菜了吧?) 高手高人看过来-------如何把Memory中位图的写到文件中 这里全是高手,就我一个菜鸟,难道,没有专门为菜鸟准备的栏目吗?
#include <iostream>
using namespace std;class Base {
public:
static int j;
static int incr(){
return j++;
} virtual void play() const {
incr();
cout << "Base::play" << endl;
cout << "Base::j="<<j<<endl; }
};class Child : public Base {
public:
int i;
static int j; static int incr() {
return j++;
} Child(int ii = 0) : i(ii) {
j = i;
} // Override interface function:
void play() const {
incr();
cout << "Child::play" << endl;
cout <<"Child::j="<<j<<endl;
}};void TestVirtual(Base& ins) {
ins.play();
}int Child::j = 0;
int Base::j=10;int main() {
Child x;
TestVirtual(x); // Upcasting
return 0;
}