Mark's blog

Content



C++复习笔记

选择题

  1. 函数重载中, 函数名相同, 但是形参的个数或者形参的类型应该不相同
  2. 在继承中, 析构函数可以被继承, 派生类也是基类的延续, 派生类的成员除了它自己的成员外, 还包含了它的基类的成员
  3. 拷贝构造函数的声明形式: 类名(类名 & 对象名); eg: A(A&);
  4. 一个类的友元类的成员函数都是这个类的友元函数
  5. 友元的正确使用可以提高程序的运行效率
  6. 静态数据成员是类的所有对象所共有的. eg: static int a;
  7. (异常处理)catch只检查只捕获异常信息的类型, 不检查它们的值
  8. 实现两个相同类型数加法的函数模板的声明是 T add(T x,T y)
  9. 析构函数不需要指定参数
  10. 不会调用拷贝构造函数的是: 将类的一个对象赋予该类的另一个对象时

填空题

  1. 指向常量的指针, 在定义指针的要在前面加上const, eg: const char * p = "abcd";
  2. 在类的成员函数中, 若要访问类本身的对象, 可以使用一个特殊指针 this
  3. 带有 纯虚函数 的类称为抽象类, 抽象类的特征是不能声明一个抽象类的对象, 但可以声明一个抽象类的指针或引用
  4. 基于MFC对话框编程时, 若要将变量的值更新到界面, 使用 UpdateData(FALSE);
  5. MFC中使用GDI绘图中, 有一个重要的类叫设备上下文, 其类名为 CDC
  6. MFC的文档/视图结构中,有两个重要的类分别叫 文档类(CDocument)视图类(CView)
  7. 所有类的根类类名叫 CObject

编程题

  1. 用友元函数重载运算符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include<iostream>
using namespace std;
class complex
{
float real,imag; // 复数的实部和虚部
public:
complex(float r=0,float i=0)
{real=r;imag=i;}
void print();
friend complex operator +(complex a,complex b);
friend complex operator -(complex a,complex b);
friend complex operator *(complex a,complex b);
friend complex operator /(complex a,complex b);
};

void complex::print()
{
cout<<real;
if(imag>0) cout<<"+"; // image小于0,则自带-
if(imag!=0) cout<<imag<<"i\n";
}

complex operator+(complex a,complex b)
{
complex temp;
temp.real=a.real+b.real;
temp.imag=a.imag+b.imag;
return temp;
}

complex operator-(complex a,complex b)
{
complex temp;
temp.real=a.real-b.real;
temp.imag=a.imag-b.imag;
return temp;
}

complex operator*(complex a,complex b)
{
complex temp;
temp.real=a.real*b.real-a.imag*b.imag;
temp.imag=a.real*b.imag+a.imag*b.real;
return temp;
}

complex operator/(complex a,complex b)
{
complex temp;
float tt;
tt=1/(b.real*b.real+b.imag*b.imag);
temp.real=(a.real*b.real+a.imag*b.imag)*tt;
temp.imag=(b.real*a.imag-a.real*b.imag)*tt;
return temp;
}

void main()
{
complex c1(2.3,4.6),c2(3.6,2.8),c3;
c1.print();
c2.print();
c3=c1+c2;
c3.print();
c3=c1-c2;
c3.print();
c3=c1*c2;
c3.print();
c3=c1/c2;
c3.print();
}
  1. 继承的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<iostream>
using namespace std;
class Animal
{
public:
double weight;
public:
Animal(double wei) { weight = wei; }
virtual void Speak(){ }=0;
};

class Dog :public Animal
{
public:
Dog(double wei) : Animal(wei) { }
void Speak()
{ cout << "我是狗,重量为:" << weight << endl; }
};

class Cat :public Animal
{
public:
Cat(double wei) : Animal(wei) { }
void Speak()
{ cout << "我是猫,重量为:" << weight << endl; }
};

void main()
{
Dog dog(10); Cat cat(20); Animal *p; // 体现类的多态性, 父类的指针引用子类对象
p=&dog; p->Speak();
p=&cat; p->Speak();
}

简答题

  1. 简述Windows API窗口编程的主要步骤

答:主要有4个步骤:

  • (1)注册窗口类;
  • (2)程序初始化(或,分成2步:创建窗口,显示窗口)
  • (3)建立消息主循环
  • (4)使用窗口函数处理消息
    评分:第2步2分,其余步骤各1分。回答的意思清楚就可以,不要求非常严谨。
  1. 简述MFC编程中建立和使用对话框窗口的主要过程

答:主要有5个步骤:

  • (1)设计对话框的外观(资源)
  • (2)创建对话框窗口类
  • (3)在使用处,定义对话框类的对象
  • (4)用对象来调用DoModal函数以显示对话框
  • (5)使用对话框对象中的成员变量带回的数据
    评分:每步各1分。回答的意思清楚就可以,不要求非常严谨。
  1. 说明在窗口中采用自定义画笔和画刷绘制矩形、圆和输出文本的方法,或写出关键代码案例。

答:主要有三个步骤

  • (1)绘制矩形:创建新画笔和新画刷,并选入窗口的CDC对象,再使用Rectangle函数画矩形
  • (2)绘制圆:创建新画笔和新画刷,并选入窗口的CDC对象,再使用Ellipse函数画圆
  • (3)输出文本:设置窗口CDC的前景色和背景色,再使用TextOut函数输出文本
    评分:矩形、圆 — 各2分,文本 – 1分。回答的意思清楚就可以,不要求非常严谨。
  1. 简述MFC中文档-视图结构中,文档类和视类各自的职责以及相互间的怎样互动方法

答:

  • (1)文档负责数据的存储、管理、保存 — (1分)
  • (2)视图负责数据的显示、用户交互 — (2分)
  • (3)文档通过UpdateAllViews来使得视图重绘 — (1分)
  • (4)视图通过GetDocumnet函数来得到相应的文档指针 — (1分)
  1. 什么是通用对话框?试举一例来说明其使用。

答:

  • (1)对于可视化编程中常用的颜色、文件、文本替换、字体、打印等选择的情况经常发生,于是MFC就预先定义了有关对话框的类,用户不需要再设计对话框界面,就可以简单地使用统一风格的对话框来满足应用的要求。
    这种预先定义的、相对频繁的功能对话框就是通用对话框。 — (2分)
  • (2)譬如CColorDialog类就是颜色选择对话框,它提供了颜色选择的常用功能。
    用户定义ColorDialog类的对象,通过设置其数据成员m_cc来初始化对话框,通过调用DoModal来启动显示对话框。一旦用户确认后可以通过调用GetColor成员函数或直接访问m_cc来得到用户最终选择的颜色。 — (3分)
  1. 设备环境接口是什么?它与CDC类有什么关系?

答:

  • (1)图形设备接口GDI管理windows的图形输出,它提供用户使用的绘图函数,以及一些图形对象,并管理绘图状态。 — (2分)
  • (2)CDC类是GDI的封装类,它定义了环境对象,提供了各种图形设备的绘图方法,并包含了使用设备环境的GDI函数。 — (3分)

 评论