关于C/C++的一些知识点整理 (7)

         1.输入和输出并不是C++语言中的正式组成成分。C和C++本身都没有为输入和输出提供专门的语句结构。输入输出不是由C++本

身定义的,而是在编译系统提供的I/O库中定义的。  C++的输出和输入是用“流”(stream)的方式实现的。

         2.逗号运算符:将两个表达式连接起来,又称为“顺序求 值运算符“,如:     3+5,6+8 逗号表达式 的值为14 。

一般形式:   表达式1,表达式2 求解过程:   先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。

         3.C++规定虚函数在派生类中重新定义时,其函数原型,包括函数类型、函数名、参数个数、参数类型的顺序,都必须与基类

中的原型完全相同。

          4.

       .

              c1要调用一次构造函数。

              c2只是一个指针,用来动态描述对象,不会调用类的构造函数。

              new MyClass在内存中新创建了一个对象会调用构造函数。

              c4是一个对象引用,是c1的一个别名,所以不会调用构造函数。

            //类指针的声明,是不会调用构造函数的;但是指向一个类实例(new)就会调用构造函数。 

            //但是类的声明,会调用默认构造函数。 

           5.若使用数组作函数实参,在被调用函数中,不需要考虑形参数组的大小。

           6.C 语言中只能逐个引用数组元素而不能一次引用整个数组。

           7.派生类的构造函数的初始化列表中,不能包含:基类的子对象初始化。

                     构造函数是不可继承的。因此,派生类的构造函数必须通过调用基类的构造函数初始化基类成员,不能够在派生类初

               始化列表直接初始化基类的成员,“越级初始化”。派生类的构造函数的一般格式为:

                     派生类名(形参表):基类名1(形参表1),基类名2(形参表2)···

                      {···}

                      注意事项:

            (1)在创建派生类对象时,先调用基类的构造函数,然后调用派生类的构造函数;撤销对象时,析构函数被调用的顺序                 则相反。

            (2)若派生类中包含对象成员,则派生类的构造函数初始化成员列表中既要列出基类的构造函数也要列出对象的构造函                  数。派生类定义对象时,先调用基类的构造函数,再调用对象的构造函数,最后调用派生类的构造函数。

             8.计算机二进制表示浮点数有精度的问题,0.0(浮点double)实际上不是0,而是非常接近零的小数。

             9. 不同类型与零值比较:

                 int
                 if(n == 0)或者 if (n != 0)
                 float
                 const float EPSINON = 0.00001;
                 if ((n >= -EPSINON ) && (n <= EPSINON ))
                 bool类型
                 if (flag)或者if (!flag)
                 指针类型
                 if (n == NULL)或者if (n != NULL)

            10.main函数的参数:main (int argc,char *argv[])  

                 argc(第一个形参)必须是整型变量,    argv( 第二个形参)必须是指向字符串的指针数组。

                 argc参数表示了命令行中参数的个数(注意:文件名本身也算一个参数);

                argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 针数组的长度即为参数                  个数。

猜你喜欢

转载自blog.csdn.net/mmmmmmyy/article/details/81356278