大一的时候学了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.多态性
看到多态让我想起病毒中的新技术——但不知道是否有关 言归正传 多态性让我有点晕 因为和
重载覆盖什么的很容易混 这个暂时不多写 还是在代码中找感觉比较好
一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。