一点总结

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

当我们自定义一个头文件的时候,系统是如何找到这个头文件的呢? 其实 ,我们可以发现我们在预处理#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.模板参数的匹配问题 普通函数 有些类型自动的转换
原文链接: https://www.cnblogs.com/coser/archive/2011/02/27/1966458.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/21618

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午11:35
下一篇 2023年2月7日 下午11:35

相关推荐