运算符重载函数的限制:五个不能实现重载的符号:".", ".*", "::", "?", "sizeof";重载运算符可以定义为类成员函数(这时候可以向当前对象发送消息的动作执行操作),也可定义为全局函数(一般为对应类的友元函数,此类函数需要显式指定所有参数,并且如果有转换构造函数,则可以使用于所有参数类型的运算);一般的重载运算符函数可以被派生类继承使用,但是赋值运算符重载函数不能被继承;因此每一个派生类都最好定义自己的赋值运...
类模板的全特化与偏特化 类模板template<typename T1, typename T2>
class Test
{
public:Test(T1 i,T2 j):a(i),b(j){cout<<"模板类"<<endl;}
private:T1 a;T2 b;
}; 全特化template<>
class Test<int , char>
{
public:Test(int i, char j):a(i),b(j){cout<<"全特化"<<endl;}
private:int a;char b;
}; 偏特化template <typename T2>
class Test<char, T2>
{
public:Test(char i, T2 j):a(i),b(j){cout<<"偏特化"<<endl;}
private...
1. using 声明使用单个声明,比较安全;using编译指令导入全部,不安全。2.在名称空间中声明的名称的链接性为外部的。3.局部变量隐藏名称空间名和全局变量名,参看p328例;4.嵌套命名空间及命名空间的传递性,命名空间起别名;5. 同个名称空间是可以在头文件中写声明,在cpp中对应写实现;6. p334名称空间的注意事项9.3.4原文:https://www.cnblogs.com/liutianrui1/p/13352966.html
1.为函数的参数赋予默认值,如果给函数的某个参数设置了默认值,那么参数列表中该参数后面的所有参数都必须有默认值,调用函数的时候如果希望参数使用自己的默认值,只要不传入那个参数就可以了;void test5(int a,int b = 5,int c = 10,int d =15){ cout<<a+b+c+d<<endl;}int main(int argc,char *argv[]){ test5(5); test5(5,100);} 2.内联函数,在函数的返回类型前面加上inline就可以将这个函数声明为内联函数,声明为...
CString strDayofWeek = _T(""); 的意思 1.sComment是自定义的CString类型变量,代表什么意思自己说了算2._T是一个宏,作用是让你的程序支持Unicode编码。如果你的程序使用的是“多字节字符集”的话,他不起任何作用3._T("")表示把CString类型变量初始化为空。------------------------------------------------------------------------------原文:http://www.cnblogs.com/fclbky/p/4247909.html
数组形参数组形参void test(const int arr[]); //arr中的值不能被改变void test(const int *arr); //arr中的值不能被改变,包括arr[1]void test(int (&arr)[10]); //引用数组,10必须声明int &arr[10]; //引用数组,不能通过编译,下标操作符具有更高的优先级void test(int (*arr)[10]); //多维数组,int *arr[10],指针数组void test(int arr[][10]); //多维数组原文:http://www.cnblogs.com/summerwinter/p/3634954.html
vector的size和capacityreserve 与 resize 是区别的:reserve 用来给vector预分配存储区大小,即capacity的值
,没有给这段内存进行初始化。reserve
的参数是推荐预分配内存的大小,实际分配的可能等于或大于这个值。这样做的好处就是消除当往vector插入数据时,size 超过原来的默认分配的capacity值时
所带来的 内存重分配开销。resize 不仅会改变vector的capacity大小,而且会重置size值,在C++ STL中,很多部分(目前包括set,...
1、为某一特定的问题而设计的指令序列称为:程序2、‘32位微型计算机’中的32位指的是:机器的字长3、存储设备中,存取速度最快的是:Cache4、指令的操作码表示的是:作何操作5、一条指令由哪两部分组成:操作码和地址码6、任何程序必须被加载到哪里中才能被CPU中执行:内存7、RAM:随机存储器:断电后会丢失存储的内容8、ROM:只读存储器:只能读取事先所存数据的固态半导体存储器,其中数据是由计算机制造厂预先写入的9、微型计算...
数据结构(data stucture)的定义:数据结构由数据元素的集合和该集合中数据元素之间的关系组成。即{D,R}。线性结构,即线性表(linearlist). ---数组(array),文件,栈(stack),队列(queue),优先级队列非线性结构 ---集合,图C++类默认访问级别是privatestruct默认访问级别是 public 这可以说是他们的惟一区别。union默认访问级别也是 public流是个简单的字符序列cout<<endl; 输出一个换行符,并清空流。C++的输入输出:void main...
一.相关知识点 那些通常放在头文件里的名字,像常量、内联函数(inline function),在缺省情况下都是内部连接的(当然常量只有在C + +中缺省情况下是内部连接的,在 C中它缺省为外部连接)。注意连接只引用那些在连接/装载期间有地址的成员,因此类声明和局部变量并没有连接。名字空间的产生与一个类的产生非常相似:
namespace MyLib{
//Declarations
}
这就产生了一个新的名字空间,其中包含了各种声明.namespace与class、...
Static关键字1.1 C语言中的static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值01.2 C++中1)静态类数据成员无论建立多少个类的对象,都只有一个静态数据的拷贝。静态数据的初始化是在类外进行的。2)静态类函数它属于整个类,一般在静态成员函数中访问的基本上是静态数据成员或全局变量。 2. 友元2.1 友元函数在类中说明的某个函数不是该类的成员函数,可以访问该类的私有函数#include...
我们知道,C++中引入了New 这个内置符号,很大方便了指针的使用,程序员不必关注与这块堆上新分配的内存是如何来的,如何初始化的,然后如何转换为我们想要的类型指针的。现在,我们重点来分析下这个NEW内置符号背后的步骤和所调用到的函数。这里面涉及到new operator, operator new, placement new.转载请注明出处: http://blog.csdn.net/elfprincexu1. New Operator (__type__ * a = new a();)C 语言当中,我们在新申请一块内...
1:在 C++ 中,模板是泛型编程的基础。模板是创建类或函数的蓝图或公式。 2:模板定义以关键字 template 开始,后接模板形参表,模板形参表是用尖括号括住的一个或多个模板形参的列表,形参之间以逗号分隔,模板形参表不能为空:template <typename T>
int compare(const T &v1, const T &v2)
{if (v1 < v2) return -1;if (v2 < v1) return 1;return 0;
} 3:模板形参表示可以在类或函数的定义中使用的类型或值。模板形参可以是表示...
每周100个C++知识点(备忘录)(三)001-019 函数模板020-028 单独编译029-044 存储持续性、作用域和链接性045-050 静态持续性、外部链接性051-053 静态持续性、内部链接性054-054 静态持续性、无链接性055-063 说明符和限定符064-068 函数和链接性069-069 语言链接性070-080 存储方案和动态分配081-100 名称空间
001-019 函数模板
1.函数模板是通用的函数描述,是一种使用泛型来定义的函数。定义的方式为:①(C++98以后)templat...
继承的概念
继承是c++中一个重要的概念。继承是指,我们可以使用一个类来定义另一个类,在创建这个类时,我们就不需要重新编写数据成员与成员函数,这可以大大方便我们编写代码和维护代码的效率。
当我们使用一个类来定义另一个类时,前者就称为基类,后者就称为派生类。
类派生的方式
为了派生一个类,我们可以指定一个类继承列表,列表可以有一个类,或者多个类,类继承的形式如下:
class Rectangle: public Shape //其中Rera...