c++在vc++中的应用基础(1)

   公司最近有个广告ts流生成器的工具,需要用到mfc来实现。mfc断断续续学了半年,似懂非懂。下周3要催着交demo,顿时感到压力和紧迫。

于是重拾c++,我一直相信:无论时光怎么流逝,技术怎么发展,基础的东西永远都不会过时。mfc说白了就是c++各种类的封装,组合的一种微软定制的框架。

 只要静下来认真的搞,一定能摸透。

   今天开始温习c++的关键语法:封装,继承, 重载,多态,虚函数,静态成员,类模板。

   0.封装和继承

     c++是一种新的程序员思维模式的语言,一个人思维模式的扭转很是不易。

     学习c++的难点就是以面向对象的视角看到看待一切事物。

    类及其成员---封装-->属性&行为。

    继承-->a(派生) is b(base)

 

 0.1对象的内存模型

     CRect--->{ 属性:m_color:int;  setColor(int color);}

     CRect a,b;

     对象a,b有各自的m_color;但是共享相同的CRect::setColor(int color,CRect* this//隐藏指针);

  

 0.2 this指针

     class CShape

  { ...

     public:

           void  setcolor(int color) {m_color = color;}

       //被编译后其实是:

            //void setcolor(int color,CShape*this){this.m_color = color;}

  }

   1.重载:

      1.1函数的重载   举例:

void ShowMessageA(const char* Text);
void ShowMessageB(const char* Text,unsigned int Type);


一组重载函数有参数类型和个数加以区分。函数的返回值对区分重载函数没有意义。

     1.2运算符重载

   

#include<stdio.h>
class CAdd
{
public:
	CAdd()
	{
		m_Operand = 0;
	}

	CAdd(int value)
	{
		m_Operand = value;
	}
public:
	int m_Operand;
};

//重载“+”运算符,操作CAdd类

CAdd operator +(CAdd a,int b)
{
	CAdd sum;
	sum.m_Operand = a.m_Operand + b;
	return sum;
}

int main(int argc,char*argv[])
 {
	CAdd a(5),b;
	b=a+8;

	printf("sum is %d\n",b.m_Operand);

	return 0;
}


   这程序演示了运算符重载,一般将它定义为某类的友元函数,或定义为类的成员函数。

  

 

2.虚函数与多态(polymorphism)

   虚函数是为了实现更一般性的调用,白话表述:更通用型,父类子类中都有相同的重载函数(函数前有virtual), Base *p =dervied; p.fun();//这时调用的Dervied类的fun();

 如果没有virtual关键字,则调用的函数由对象指针的类型决定。

 

    多态:相同的指令调用不同的函数(父子类中重载的函数,需有virtual关键字)

   虚函数是实现多态的关键。

   polymorphism的目的,让基类代码,能够完成无碍的继续处理派生类对象

   纯虚函数:包含它的类是一个抽象类,不能实例化。

                        virtual void display()=0;

总结:1.派生类重新定义一个成员函数,应把基类前加入virtual.

           2.多态:单一指令调用不同函数。

           3.虚函数是实现多态的和动态绑定的关键。

          4.拥有纯虚函数的类为抽象类,不能实例化对象;但可以拥有指向抽象类的指针,以便操作抽象类的各个派生类。

          5.虚函数派生下去依然为虚函数,可以省略virtual.

   参考资料

   [1]:vc++编程技术与难点剖析.  辛长安

   [2]:深入浅出MFC   侯捷

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值