C++复习

1.在C++中对象声明时构造函数的调用是顺序调用,析构函数是逆序调用,说明是使用堆栈来存储。

2、组合类的声明:

private:
    CPoint     ptCenter;
    CSize      size;
};
CRect::CRect(int left, int top, int right, int bottom)
        :size(right-left, bottom-top),    ptCenter((left+right)/2, (top+bottom)/2)
        //使用组合对调用类对象的初始化
{  }
void main()
{
    CRect rc(10, 100, 80, 250);
    rc.Show();
}

3.this为当前对象的引用

void COne::copy(COne &a)
{
   if (this == &a) return; //this为当前对象的引用。
    *this = a;
}
void main()
{
    COne one, two(3, 4);
    one.print();
    one.copy(two);
    one.print();
}
4.静态数据成员的声明和初始化

private:
    static int nSum;        // 声明静态数据成员
};
int CSum::nSum = 0;        // 静态数据成员的初始化,前面要用数据类型

}

cout<<"sum = "<<nSum<<endl;//直接调用,不像JAVA中要声明限定符

5.友元函数

friend  CPoint  Inflate(CPoint &pt, int nOffset);     // 声明一个友元函数
private:   
    unsigned      m_x,  m_y;
};
CPoint Inflate ( CPoint &pt, int nOffset )         // 友元函数的定义
{
    CPoint ptTemp = pt;   
    ptTemp.m_x += nOffset;   // 直接改变私有数据成员m_x和m_y ,友员函数不会继承,是单向的
    ptTemp.m_y += nOffset;   
    return ptTemp;
}

6.指针与引用

    char *str;
        str = bMan?"男":"女";
        cout<<"性别:"<<str<<endl;//当将str改为*后输出?,改为&str输出:0x0012FE80
    }

7.继承中是多继承,private类型的不可以访问,但是可以通过public类型的间接访问

private:
    int Age;
};//1.class要用;号来结束
void main()                   
{                   //派生类的child ob;会先调用父类的默认然后自己的默认构造函数。
    ME me(24);//2.可将自己初始化;可调用公有基类成员函数,将私有数据初始化;
    me.SetData("JeromeCen","0807100404");

//3.可以利用父类的public方法组件自己的方法,并能够间接的访问私有成员   
    me.InputScore( 85, 76, 91 );
    me.Print();
    me.ShowAge();
}

8.虚基类,虚函数,抽象类

#include<iostream.h>
class Shape//若有虚基类是为了多继承同一父类时共同维护一份父类拷贝
{ protected:
      double x,y;
   public:
      void set(double i, double j)//虚函数是为了统一接口,动态联编
      { x=i; y=j;  }
      virtual void area()=0; //声明纯虚函数  ,有纯虚函数的类为抽象类
};
class Triangle: public Shape
   { public:
        void area()
        { cout<< "三角形面积: " <<0.5*x*y<<endl;   } 
    };
 class Rectangle: public Shape
   { public:
        void area()
        { cout<<"矩形面积:" <<x*y<<endl; ;  } 
    };
void main()
  { Shape *p;
    char *p1="5";

//测试说明了基本类型指针赋值后*p p都表示值,而&总表示十六位的地址。对象类型则*p出错,p和&p都为地址
cout<<"P的值为:"<<&p1<<endl;
     Triangle t;
     Rectangle r;
     p=&t;
   
     p->set(5.1,10);
     p->area();  
     p=&r;
     p->set(5.1,10);
     p->area();  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值