看代码回答下列问题:
class Graph
{
public:
Graph() { s_gCount++; }
~Graph() { s_gCount--;}
virtual int drawOut() = 0;
static int getTotalCount() { return s_gCount; }
protected:
int m_x;
int m_y;
static int s_gCount;
};
1)这个类能否使用,为什么
2)上述代码如有错误请指出
3)如果有一个Rectangle类公共继承该类,那么s_gCount对Rectangle的成员属性是什么?
4)对Graph及其子类的计数是否有效,如果无效应该采取什么措施?
5)请画出该类的内存布局结构示意图,如有修正,请只画出修正后的
B: ostream& operator<<(ostream& os,const A& a){
os<<a.data;
在运算符重载的前提下 os 是一个对象么?? 是不是相对于 cout 跪求各位前辈解答!!!!!!!
class Graph
{
public:
Graph() { s_gCount++; }
~Graph() { s_gCount--;}
virtual int drawOut() = 0;
static int getTotalCount() { return s_gCount; }
protected:
int m_x;
int m_y;
static int s_gCount;
};
1)这个类能否使用,为什么
2)上述代码如有错误请指出
3)如果有一个Rectangle类公共继承该类,那么s_gCount对Rectangle的成员属性是什么?
4)对Graph及其子类的计数是否有效,如果无效应该采取什么措施?
5)请画出该类的内存布局结构示意图,如有修正,请只画出修正后的
B: ostream& operator<<(ostream& os,const A& a){
os<<a.data;
在运算符重载的前提下 os 是一个对象么?? 是不是相对于 cout 跪求各位前辈解答!!!!!!!
2. 有错,static int getTotalCount() { return s_gCount; } static函数不能访问非static成员。
3. protected
4. 无效,每一个Graph只会被构造一次,也只被析构一次,在对象的生存期只s_gCount只为1,将s_gCount成员使用static声明。
5. 贴不了图。B,是。不明白什么是相对于。
2.首先,构造函数和虚构函数不能定义为public;
其次,static数据成员应该在类的外部定义且需要初始化;
3.public方式继承的话保留基类的访问权限,故为protected
4.无效,即使是派生类也是一样。
5.不难,只是要注意static类型的成员不属于类,所以无需画出了。
B:重载<<,一个参数是对ostream对象的引用,在os是产生输出,作用相当于没重载前段cout。自己的解答,欢迎讨论。
class Graph
{
public:
Graph(){ s_gCount++; }
~Graph() { s_gCount--;}
virtual int drawOut() = 0;
static int getTotalCount() { return s_gCount; }
protected:
int m_x;
int m_y;
static int s_gCount;
};int Graph::s_gCount = 0;class Rectangel : public Graph
{
public:
int drawOut()
{
cout<<"实现drawOut"<<endl;
return 0;
}
};int _tmain(int argc, _TCHAR* argv[])
{
if(1)
{
cout<<"构造Rectangel对象:rect1"<<endl;
Rectangel rect1;
cout<<"rect1调用getTotalCount值:"<<rect1.getTotalCount()<<endl; cout<<"构造Rectangel对象:rect2"<<endl;
Rectangel rect2;
cout<<"rect1调用getTotalCount值:"<<rect1.getTotalCount()<<endl;
cout<<"rect2调用getTotalCount值:"<<rect1.getTotalCount()<<endl;
}
cout<<"rect1和rect2对象的生命期结束"<<endl;
cout<<"构造Rectangel对象:rect3"<<endl;
Rectangel rect3;
cout<<"rect3调用getTotalCount值:"<<rect3.getTotalCount()<<endl; return 0;
}运行结果:构造Rectangel对象:rect1
rect1调用getTotalCount值:1
构造Rectangel对象:rect2
rect1调用getTotalCount值:2
rect2调用getTotalCount值:2
rect1和rect2对象的生命期结束
构造Rectangel对象:rect3
rect3调用getTotalCount值:1
请按任意键继续. . .
不能,该类拥有纯虚函数,该类为抽象类,不可实例化2)上述代码如有错误请指出
眼拙没看到。。
3)如果有一个Rectangle类公共继承该类,那么s_gCount对Rectangle的成员属性是什么?
public继承,对成员的属性没有改变,所以还是protect
4)对Graph及其子类的计数是否有效,如果无效应该采取什么措施?
我觉得有效,不过最好在类外初始化一下
5)请画出该类的内存布局结构示意图,如有修正,请只画出修正后的
- -B: ostream& operator<<(ostream& os,const A& a){
os<<a.data;
在运算符重载的前提下 os 是一个对象么?? 是不是相对于 cout
是
看来我面试过不了。。