麻烦老师出来,指导下,关于我在堆栈里生成对象所出现的你问题。

来源:互联网  时间:2016/9/1 20:15:40

关于网友提出的“ 麻烦老师出来,指导下,关于我在堆栈里生成对象所出现的你问题。”问题疑问,本网通过在网上对“ 麻烦老师出来,指导下,关于我在堆栈里生成对象所出现的你问题。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 麻烦老师出来,指导下,关于我在堆栈里生成对象所出现的你问题。
描述:

对象heapC++


//C++ CODE
#include 
using namespace std;
class Vehicle {
public:
Vehicle () {
cout << "Vehicle construct" << endl;
}
virtual ~Vehicle () {
cout << "Vehicle deConstruct" << endl;
}
void Run ();
void Stop ();
    
protected:
    int    m_maxSpeed;
    int    m_weight;
};
class Bicycle : public Vehicle {
public:
Bicycle () {
cout << "Bicycle construct" << endl;
}
virtual ~Bicycle () {
cout << "Bicycle deConstruct" << endl;
}
void setMaxSpeed (int n); 
private:
int m_height;
};
void Bicycle::setMaxSpeed (int n) {
m_maxSpeed = n;
}
int main (int argc, char** argv) {
//#define HEAP
//--Way 1: in the stack
#ifndef HEAP
Bicycle bicyc();
// bicyc.setMaxSpeed(100); //这里编译不过
#endif
//--Way 2: in the heap
#ifdef HEAP
Bicycle* bicyc = new Bicycle();
bicyc->setMaxSpeed(100);
delete bicyc;
bicyc = NULL;
#endif
return true;
}

问题1:在way1里,就是在栈里生成对象,然后使用类的方法,但是却编译不过
问题2:在way1里,我将编译不过的地方注释掉,然后再跑,确没有出现我想要在构造和析构出现的文言;如果我在堆里生成对象,都一切正常,这个是为什么,希望老师指点
解决方案1:

Bicycle bicyc();
被编译器解释为:
声明一个函数,函数名为bicyc,该函数返回一个Bicycle对象。
改为:
Bicycle bicyc;
使用缺省构造函数初始化不需要加括号。

上一篇为什么listctrl返回列数,在xp里有时会返回0,和win7上返回的结果不一样呢?
下一篇const 有什么用啊??
明星图片
相关文章
《 麻烦老师出来,指导下,关于我在堆栈里生成对象所出现的你问题。》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)