模板是C++泛型编程中的重要部分,也是最复杂的部分,在C++中要了解template的出现在编程上给我们带来的方便性,我们先来了解下几个概念:1、模板实例化;2、模板特化;3、模板偏特化 模板实例化 与类实例化为对...
C/C++
复杂的C++,当函数返回对象到底发生了什么?
我们知道,当函数运行结束的时候,函数内部的局部变量就会消失,这C/C++里没有任何疑问的规定,但是今天我在写代码的时候突然就想到了一个相当纠结的问题,那就是当我一个函数返回类型是一个对象的时候,以我当时...
STL排序算法
以前一直不重视排序算法,因为之前很少有应用场景,最近在面试过程中发现排序算法经常会被问到,有时在一些笔试或者面试题目中需要用到排序算法来解决问题,如果每次都自己手写排序,那么要相当耗时,而且我也不...
explicit构造函数的作用
下面程序f()被调用时,输出是什么?? #include <iostream> #include <string> using namespace std; class Number { public: string type; Number():type("void"){}; explicit Number...
C++空类默认生成哪些函数?
定义一个空的C++类,例如 class Empty { } 一个空的class在C++编译器处理过后就不再为空,编译器会自动地为我们声明一些member function,一般编译过去就相当于 class Empty { public: Empty(); // 缺省构造...
对C++中构造函数、析构函数、虚函数及一般成员函数的理解总结
这里我们主要讨论构造函数、析构函数、普通成员函数、虚函数,对这几种函数说说自己的理解。 对构造函数的总结 对构造函数,我们先来看看如下的代码 #include <iostream> using namespace std; class B...
C++函数中那些不可以被声明为虚函数的函数
常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。 1、为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被override,声...
小心在构造函数或者析构函数中调用虚函数
这个问题来自于《Effective C++》条款9:永远不要在构造函数或析构函数中调用虚函数 。 之所以说小心,是因为一般建议我们不要在构造函数或者析构函数中调用“虚函数”,因为在构造函数或者析构函数中,虚函数的机...
C++中虚析构函数的作用
#include <iostream> using namespace std; class Base{ public: Base(){}; ~Base(){ cout<<"这是Base类的析构函数"<<endl; }; virtual void DoSomething(){ ...
C++继承:公有,私有,保护
公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 公有继承(public) 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成...