面向对象

对一个空类,默认会产生四个函数: 构造函数 析构函数 拷贝构造函数 和赋值函数。

 

静态成员变量:

可以在一个类的多个对象间共享数据

静态成员变量需要初始化

如果静态成员变量设为私有的,只能通过静态成员函数来访问。

常成员变量,需要在类初始化列表中初始化 或者加入 static 变成静态的.

class test

{

  const int a = 10;  // wrong

};

 

class test

{

  static const int a = 10;  // right

};

 

 

class test
{
public:
  const int a ;
  test():a(10)     //right
 { 
 }

};

 

 

class test
{
public:
  const int a ;
  test():a(10)     //right
 { 
 }

};

 

 

构造函数和析构函数 考点:

 

1. 为什么MFC中析构函数是virtual的?

因为多态, 如下:

Base  * pb = new Child;

delete pb;

如果析构不是virtual,就会直接调用Base的析构,而不是调用Child的析构。

2. 为什么构造又不能是Virtual的?

虚函数是在想调用接口,而又不知道对象具体类型的时候,但是创建对象是一个非常具体的构成,必须要知道具体的类型,所以构造不能为虚。

 

拷贝构造函数  和赋值函数

String  & operator =(constr String & other)

{

  //判断释放是自己

  if(this ==other)

    return *this;

  //释放原有资源

  if(m_data != null)

  delete m_data;

 

  //拷贝字符串

 

  //

  return *this;

}

//其中的const的作用:

1. string s3;

    const string  s4;

    s3= s4;  如果没有const,会报错,因为一些const变量不能转化成非const变量,在编写成员函数的时候也得注意。

 

2.  s7  s8 s9

     s9 = s7 + s8;  //不加const也会报错 ??

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2011-06-15 15:23  甜甜嘟嘟  阅读(201)  评论(0编辑  收藏  举报