一些细节

来源:互联网 发布:哈希姆家族 知乎 编辑:程序博客网 时间:2024/06/05 21:10

1. 看到一小段代码,结束的时候用

cin>>stop_flag

这在debug的时候应该很方便吧


2. 关于typeid操作符

typeid(int)定义了一个类的示例(type_info类,但构造函数为private)

并且有:

(1)重载了逻辑运算符“==”与“!=”

typeid(int)==typeid(double)

(2)定义了成员函数 name(),返回类型为string字符串

cout<<typeid(int).name()<<endl;cout<<typeid(4).name()<<endl;

(3)定义了成员函数before,返回bool值(因为不知道原理,下面是瞎掰,但结果正确!)

int a;                              //可以没初始化,在main内外没影响char b;bool c = typeid(a).before(b);       //比较的两个都是type_info的示例,  读作 a 的“严格前面”是b,如果两者数据类型相同,也返回false


以上讨论了typeid 使用的4种情况(其中before( )不靠谱,但目前测试结果正确)


3. 一般而言,类中的成员函数具有一个附加的隐含实参,即指向该类对象的一个指针(this)。但是static 成员函数没有。


4(1) static数据成员: 独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联

    (2)static成员函数: a. 可以直接访问所属类的static成员,,但不能直接访问使用非static成员(没有this形参)。

                                             b. 类的外部定义(定义,而不是声明)static成员时,无须重复指    定static保留字。

                                             c. 不能被声明为const。毕竟,将成员函数声明为const就是承诺不会修改该函数所属的对象。

                                             d. 不能被声明为虚函数。

    (3)声明:static成员遵循正常的公有/私有访问规则

     (4)使用:a. 通过作用域操作符从类直接调用static成员,或者通过对象、引用或指向该类类型对象的指针间接调用。

                           b. 类成员函数可以不用作用域操作符来引用类的static成员。

  

    (5)初始化:static数据成员必须在类定义体的外部定义(正好一次),不像普通数据成员,static成员不是通过类构造函数进行初始化,而是应该在定义时进行初始化(通常将                                 static数据成员的定义放在包含类的非内联成员函数定义的文件中)。

                              但只要初始化式是一个常量表达式,整型const static数据成员就可以在类的定义体中进行初始化(但是,该数据成员仍必须在类的定义体之外进行定义,(**实际                               测试表明,不需要在定义体之外再次定义**))


5. VS  win32控制台,则32位,sizeof(int) = 4字长,INT_MAX = 2^31 = 2147483648


6. 关于基类指针和子类指针的相互赋值:结果类似于基本类型char 与 int; 规则就是子类是基类,基类不是子类,需强制转换。可参考


7. time(NULL)   返回当前时间


8. (1)对于C的标准库,例如,stdio.h,没有名字空间的概念,因此直接包含后即可使用。

    (2)新的C++标准库为了统一以前的C标准库,将原来c的标准库也放入了std名字空间,并把原来的C标准库去掉了.h后缀,前面加上字母 “c”,例如stdio.h就变成了cstdio,使用时为#include <cstdio>,其内容和#include <stdio.h>相同,但是要额外使用名字空间std,也就是using namespace std;

    (3)因此,对于新的C++标准库,没有了.h形式的头文件,例如iostream,在包含了头文件以后,必须使用std名字空间才能使用库中的内容。对于C标准库,有两种使用方法,一种是用老的.h形式,例如stdio.h直接包含就可以了;另一种就是用C++的统一形式,例如cstdio,和 C++标准库一样,包含了以后还要加上using namespace std;才能使用。


0 0
原创粉丝点击