MFC学习笔记(1)

来源:互联网 发布:淘宝联系卖家客服 编辑:程序博客网 时间:2024/04/28 22:09

大一的时候学了C语言  SDK编程也接触了一段时间  今天准备学学MFC

于是想把学习过程中自己的心得写下来  面向对象编程对我来说是陌生的  所以

完全是个菜鸟  大家一起来学习  我争取一天写一篇笔记  这个笔记不是用来

教人学习的  只是学习过程中对思想上的把握  以供分享及自己日后复习 

 

话说没学C++的语法就开始学MFC确实有点仓促  于是要恶补一下——

 

1.类与对象

个人理解 这个东西根本不需理解  类是抽象的 对象是具体的

如果设定铅笔是个类  那么我的铅笔和你的铅笔 以及他的铅笔就是对象

我觉得在具体编程里面 类是一个自定义的数据类型 对象就是数据类型定义

出的变量  在具体说说  类也无非就是 里面可以有函数的结构体  

只是内部成员的默认权限与结构体不同罢了

不要把类和对象想的神奇 你要有一种 “噢 就应该是这样”的感觉

当然只是理解类和对象是不够的  要想从面向对象的角度编程 需要一定的练习

 

访问控制标识:

public:什么地方都可以访问

private:仅在自己类的内部访问

protected:外部无法访问  子类可以

 

2.构造函数与析构函数

(1)构造函数:最重要的作用是创建对象本身,每个类都必须有一个构造函数

没有构造函数就不能创建对象,如果用户没有定义构造函数,c++将提供一个

默认的不带参数的构造函数,它只创建对象而不进行数据的初始化,只要用户定义

了一个构造函数,C++就不再提供构造函数了。

 

(2)析构函数:对象要死的时候  清理下门户,(大致就这意思),析构函数不允许带参数

和返回值 一个类只能有一个析构函数。

 

在构造函数中分配对内存 在析构函数中对其释放

 

这两个函数在类中创建 不管创建什么对象 都会自动执行  这和C语言中 凡事都要

程序员亲历亲为有很大的区别  比如C语言中的结构体  每创建一个结构体变量都要自己

去为其初始化。

 

3.重载

(1)操作符的重载:

所有语言都为内置类型进行了操作符重载

比如:

int a,b,c;

float d,e,f;

c=a+b;

f=d+e;

'+'操作符 对不同的数据类型进行数学概念上相似的操作 这就是一种操作符重载

 

另外C++中的输入输出操作符 << 和>>实际上是对C中的左移位和右移位操作符的重载

 

(2)函数重载:

函数重载构成的条件:函数传入的参数类型,传入的参数个数不同,才能构成重载。

其实思想上和操作符重载是一样一样的  参数不就是要处理的数据吗  不同的数据用

相同名字的函数用相似的方法进行操作  大体上就是这个意思了

 

4.this指针

指向对象本身的指针  每创建一个对象就会出现一个对应的this存放该对象的地址

对象调用类的成员函数时 除了接受用户定义的实参  还接受到一个对象的地址 这个地址

被一个隐含的形参this指针所获取。

 

5.继承

多重继承暂时不说  简单的继承就是故名思意 没什么可说的  比如昆虫这个类 它的属性是

六条腿 方法是爬  我们又建立一个甲壳类昆虫的类  那么难道我们还要重复的在建这个类时

写上六条腿和它能爬吗  我们只要 甲壳虫:public 昆虫  这么短短的一句话就可以说明 

甲壳虫类是昆虫类的子类 或者说派生类  就知道甲壳虫类具有昆虫的所有特性  当然还可以

添加甲壳虫自己的特性  

上面的 甲壳虫:public 昆虫  public是类的继承特性 还可以是protected和

private  具体访问特性略。

 

派生类会先调用基类的构造函数然后再调用自己的构造函数 析构则相反

 

6.函数的覆盖

函数的覆盖是发生在父类与子类之间的  而函数的重载是在同一个类里的

 

7.::作用域标识符

 

8.多态性

看到多态让我想起病毒中的新技术——但不知道是否有关  言归正传 多态性让我有点晕 因为和

重载覆盖什么的很容易混  这个暂时不多写  还是在代码中找感觉比较好

多态的概念比较复杂,有多种意义的多态,一个有趣但不严谨的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。
一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。
9.虚函数及纯虚函数
10.引用
形式如下
int &x=y;  只在定义时这样写才是引用的意思
x=4;
11.头文件重复包含问题
#ifndrf CCCCCCCCC
#define CCCCCCCCC
#endif