zoukankan      html  css  js  c++  java
  • C++ Primer 有感(函数)

    1.函数应该在头文件中声明,并在源文件中定义。(定义函数的源文件应包含声明该函数的头文件)将提供函数声明的头文件包含在定义该函数的源文件中,可使编译器能检查该函数的定义和声明是否一致。


    2.既可以在函数声明也可以在函数定义中指定默认参数。但是,在一个文件中,只能为一个形参指定默认实参一次。下面的例子是错误的:

      //ff.h

    int ff ( int i=0 );

      //ff.c

     #include "ff.h"

     int ff( int i= 0 ){ /* ......*/ }  //error

    通常,应在函数声明中指定默认实参,并将该声明放在合适的头文件中。

    如果在函数定义的形参表中提供默认实参,那么只有在包含该函数定义的源文件中调用该函数时,默认实参才是有效的


    3.内联函数应该在头文件中定义,这一点不同于其他函数。

      内联函数能要在程序中定义不止一次,只要内联函数的定义在某个源文件中只出现一次,而且在所有源文件中,其定义必须是完全相同的。把内联函数的定义放在头文件中,可以确保在调用函数所使用的定义是相同的,并且保证在调用点该函数的定义对编译器可见。

      在头文件中加入或修改内联函数时,使用了该头文件的所有源文件都必须重新编译。


    4.编译器隐式的将在类内定义的成员函数当作内联函数。


    5.const对象,指向const对象的指针或引用只能用于调用其const成员函数,如果尝试用它们调用非const成员函数,则是错误的。


    6.如果没有为一个类显式定义任何构造函数,编译器将自动为这个类生成默认构造函数。

      合成的默认构造函数一般适用于仅包含类类型成员的类。而对于含有内置类型或复合类类型成员的类,则通常应该定义他们自己的默认构造函数初始化这些成员。


    7.如果两个函数声明的返回类型和形参表完全匹配,则将第二个函数声明视为第一个的重复声明。如果两个函数的形参表完全相同, 但返回类型不同,则第二个声明视错误的。

       在同一类中,对于函数名相同的const函数和非const函数能够构成重载,同时它们被调用的时机为:如果定义的对象时常对象,则调用的是const成员函数,如果定义的对象非常对象,则调用的重载的非const成员函数。

      重载函数的条件:

    (1)相同的作用域

    (2)函数名相同

    (3)函数的形参表不同

    (4)与函数的返回值无关

    对于重载注意:

    (1)形参与const形参的等价性仅适用于非引用形参;

    (2)有const引用形参的函数与有非const引用形参的函数是不同;

    (3)函数带有指向const类型的指针形参与带有指向相同类型的非const对象的指针形参的函数不相同。


    8.函数指针只能通过同类型的函数(同类型包括参数和返回值)或函数指针或0值常量表达式进行初始化或赋值。(注意:指向不同函数类型的指针之间不存在转换)


    9.C++语言允许 使用函数指针指向重载的函数。(注意:指针的类型必须与重载函数的一个版本精确匹配(精确匹配,包括参数和返回值,隐形转换都不行的)。如果没有精确匹配的函数,则对该指针的初始化或赋值都将导致编译错误)

  • 相关阅读:
    vue中点击复制粘贴功能
    node.js之爬虫
    node.js初识12
    webapp定位
    Nginx工作原理和优化
    Android 命名规范 (提高代码可以读性)
    VS2015如何自定义类模板、我的模板——原来这么简单!
    VS2010中新控件的编程------颜色按钮类和颜色对话框
    WinForm创建自定义控件
    Android--MVP设计模式实践
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332730.html
Copyright © 2011-2022 走看看