1。给定下面的代码:
class Graph{
public:
Graph() { s_gCount++; }
virtual ~Graph() { s_gCount–;}
virtual int drawOut() = 0;
static int getTotalCount() { return s_gCount; }
protected:
int m_x;
int m_y;
static int s_gCount;
};
回答下列问题:(各5分)
1)这个类能否生成实例,为什么?
2)上述代码中有什么错误?
3)如果有一个Rectangle类公共继承该类,那么s_gCount对Rectangle的成员属性是什么?
4)对Graph及其子类的计数是否有效,如果无效应该采取什么措施?
5)请画出该类的内存布局结构示意图
———————————————————–
2。给定下面的代码:
class A
{
int a;
};
class AA : public A
{
int aa;
};
class X : public virtual A
{
int x;
};
class Y : public virtual A
{
int y;
};
class Z : public X, public Y {
int z;
};
回答下列问题:(各5分)
1)请画出上述5个类的UML类图
2)请画出A、AA、X、Z的内存布局结构示意图
———————————————————–
3。给定下面代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct _AAA
{
int a;
}AAA, *PAAA;
class CAAA
{
public:
CAAA() { m_a.a = 0; }
CAAA(CAAA& in) { printf(”CAAA(CAAA& in)n”); }
CAAA(AAA in) { printf(”CAAA(AAA in)n”); }
CAAA(int in) { printf(”CAAA(int in)n”); }
private:
AAA m_a;
public:
operator PAAA ()
{
return &m_a;
}
};
void test0(PAAA pa)
{
printf(”test0n”);
}
void test1(CAAA ca)
{
printf(”test1n”);
}
void test2(CAAA ca)
{
printf (”test2n”);
}
void main(void)
{
CAAA a;
test0 (a);
AAA b;
test1 (b);
int i=0;
test2 (i);
}
请回答下列问题:(各5分)
1)找出程序中的错误
2)test0函数声明传入的参数为PAAA类型,而在main函数中,实际传入的是CAAA类型,这是否是一个错误?如果不是,请解释原因。
4。回答下列问题:
1)C++中的struct和class类型有什么区别?(2分)
2)假定一个class名为Test,具有构造函数、拷贝构造函数、operator =,那么
Test a;
Test b=a;
分别执行的是哪一个函数?(2分)
3)C++程序进行链接时是否必须链接stdc++函数库,如果不必须情况下不需要,什么情
况下需要?(2分)
4)你所熟悉的关于C++的中英文经典书籍都有哪些,它们分别都侧重于什么方面?(5分)
五、QT编程。任选2题完成。(各20分)
要求:按照综合编程题目的要求编写代码和文档。
1.编写一个简单的clock控件, 要求从QWidget继承, 有一个指针和表盘,指针每12秒转一圈,并且可以用鼠标左键,起动和停止指针的转动.
2.给定一个designer生成的UI文件, 读取指定名字控件的几何信息,计算出该控件的面积大小.(用Dom和SAX都可)
3.设计一个程序, 建立个人信息库,包括:姓名,年龄,性别,住址.建立完之后可以查处特定人的信息,用designer设计你的界面, 不要求把信息库存在硬盘上.
4.把第三题变成国际化程序, 要求两种语言中文和英文.需要用qt-linquist等工具.
5. 用QSocket实现两台不同机器间的收发, 收发要求用户动态输入.
提示:以上各题需在qt3.0以上实现,推荐用qt-3.1.1,不限止qt-embedded或qt-desktop.