2013-04-08

来源:互联网 发布:淘宝怎么买岛国视频 编辑:程序博客网 时间:2024/05/16 01:29

1.如果未加格式限制,float f=1.0  用cout输出的结果为1.

2.若不定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生一些问题:它会只拷贝类的存储区的内容,如果其中有引用的话,它是不拷贝的,这就造成了,两个类的实例引用了同一个对象。结果就是未知,什么都可能发生。尤其出错后,很难定位。

3.成员函数,全局函数,友元函数:

成员函数:可以访问类中的所有的成员,第一个参数隐含为this

全局函数:可以访问类中的公开成员

友元函数:可以访问类中所有成员的全局函数。

4.结构化编程和面向对象编程:结构化编程:把一个复杂的过程分解为子过程,子过程继续分解直到成为简单的过程;面向对象编程:把一个复杂的系统分解为若干个对象,有这些对象共同提供系统的功能。

5.如果一个类的默认构造函数是保护类型,则不可用new来创建新类型。如:class A{protect:A(){}}就不可用A a=new A;

6.struct和class都可以继承,包含成员函数,实现多态。但是struct默认的是public,class默认的是private。而且struct像是数据结构的实现体,而class像是对象的实现体。

7.有符号数和无符号数相加得无符号数

8.class Singleton

public

       static Singleton* GetInstance()

       { 

              if(NULL ==_instance)

              { 

                     _instance=newSingleton(); 

              } 

              return_instance

       }

 

protected

       Singleton(){};

       static Singleton* _instance

};

 

Singleton* Singleton::_instance=NULL

系统中一定最多只存在该类的一个实例,对外接口函数是static的,而且默认构造函数是protect类型的。

9.枚举默认的首个值是0.

10.类C和类D,C是基类

C* pc = new D(1,2,3);delete pc;return 0;如果基类的析构函数是虚函数,则先调用D中的析构函数,再调用C中的析构函数;如果基类的析构不是虚函数则只调用C中的析构函数。

11.#include <stdio.h> void main( void ) { int a[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*p)[3]=a;printf("%d\n",*((int *)p+1)+2);}结果是2+2=4

12.  虚析构函数也必须遵守调用层次惟一的原则;虚析构函数被调用时,只有成员函数的本地版本被调用;可以创建一个纯虚析构函数。

13.重载运算符的返回值类型一定不能使void。

14.一个const对象只能访问const函数。

15.宏定义中使用#,返回#跟着的字符串,如define PRINT(a) cout<<#a<<endl      PRINT(10*10)宏定义是a前有#则输出10*10,没有则输出100


原创粉丝点击