• 一点总结


    系统是如何找到头文件的:

      当我们自定义一个头文件的时候,系统是如何找到这个头文件的呢?  其实 ,我们可以发现我们在预处理#include"head.h" 用的是双引号,而不是尖括号  是因为,当用双引号的时候,系统会首先在文件所在的目录下寻找该头文件。如果找不到,预处理器会在c++标准库头文件中去继续寻找  而当我们使用尖括号的时候,系统只会在c++标准库头文件中去寻找!

    获取系统时间:

     

    #include<iostream>
    #include
    "ctime"
    using namespace std;
    int main(void)
    {
    tm
    *local;
    time_t t;
    t
    =time(NULL);
    local
    =localtime(&t);
    cout
    <<local->tm_year+1900;
    return 0;
    }

    关于static:

      静态成员 是属于整个类的 它不属于对象  所以staitc成员函数 只能访问static数据  而不能访问对象中的数据我们可以这么解释一下 首先 static 是所有对象所共有的  当让它访问一个对象中的非static数据 系统无法判断这个数据到底属于谁 所以也就无法访问 

    关于c++引用的一些概念:

    引用(reference)是c++对c语言的重要扩充
    引用并不是产生对象的副本,仅仅是对象的同义词。
    引用必须在定义时马上进行初始化,不能先定义一个引用后,才初始化它。

    当大型对象被传递给函数时,使用引用参数可使参数传递效率得到提高,因为引用并不产生对象的副本,也就是参数传递时,对象无须复制。
      引用返回值 如果一个函数返回了引用,那么该函数的调用也可以被赋值。这里有一函数,它拥有两个引用参数并返回一个双精度数的引用:

    double &max(double &d1,double &d2)

    {return d1>d2?d1:d2;}

    由于max()函数返回一个对双精度数的引用,那么我们就可以用max() 来对其中较大的双精度数加1:max(x,y)+=1.0;

    在定义类的函数时,千万要注意的是不能返回私有数据的引用,因为这样的话,等于将私有数据暴露在了外界,因此封装性就被破坏了,是极其危险的。

    多态性的定义:

    所谓多态性是指由于继承而关联在一起的不同类的对象,对于相同的成员函数调用做出不同反应的一种能力。
      每个含有virtual函数的类的对象,都含有一个指向该类的vtable的指针。当有指向派生类对象的的基类指针进行一次函数的调用。vtable中相应的函数指针可以执行期间获得,然后间接引用该指针,从而完成这次函数调用。vtable的检索和指针的间接引用只占用很少的运行时间。

    关于虚函数:

    virtual double getMoney() const = 0;
      "=0"即将该函数定义为了一个纯虚函数,纯虚函数必须在后面的继承类中加以override我们需要注意的是 这个必须一词如果存在纯虚函数而没有对其进行重载 编译器将导致一个严重的错误
      所以 我们在定义一个纯虚函数的时候 一定要考虑到实际情况 也就是说 对于一个方法或者函数  我们知道是一个必须使用的,而且不可删除的是需要程序员在后来的定义中必须要重新重载的。
      而关于抽象类  我们说 是一种永远都不会 直接实例化的一种类 是需要继承的 所以在抽象类中提供一种虚函数是必要的
      而对于前面已经定义的虚函数而言,我们在继承类中经常习惯的将重载的函数前仍加上关键字 virtual 注意 这里我们加入该关键字 并不是因为是程序所必须要求的,而是出于良好的编程习惯而言也就是说 在基类中 已经定义了虚函数 后面就可以不必再定义了 而为了增强程序的可读性 所以经常习惯的加上 virtual
      良好的编程习惯:如果一个类含有virtual函数,该类就要提供一个virtual析构函数,即使该析构函数并不一定是该类需要的。从这个类可以包含析构函数,但是必须正确调用。

    函数模板和模板函数:

      函数模板提供了一类函数的抽象,它提供了任意类型为参数及返回值。

      函数模板经实例化后生成的具体函数成为模板函数。

      函数模板代表了一类函数,模板函数表示某一具体函数。 

      1.当编译器遇到template关键字的时候,编译器只是简单的知道,它不会产生任何的代码 因为它根本不知道T为何类型

      2.编译器只在第一次调用时生成模板函数 当之后遇到相同类型的参数调用时,不再生成其他的模板函数 将直接调用第一次生成的那个

      3.模板参数的匹配问题  普通函数 有些类型自动的转换

  • 相关阅读:
    day77
    75
    ElasticSearch集群的配置
    虚拟机VMware Workstation搭建Linux集群——VMware Tools的安装与配置
    ElasticSearch通过Rest Http API完成基本操作
    Maven笔记
    Oracle通过PL/SQL Developer导出数据为CSV格式,VARCHAR2类型的字段如果存入的是数值(例如3307830000004059)太长,最后一位会被置为0
    Redis的安装与配置
    2017 3月份以来入职感受
    Java设计模式(05-- 代理模式模式 )
  • 原文地址:https://www.cnblogs.com/coser/p/1966458.html
Copyright © 2020-2023  润新知