C++基础:常量成员函数特殊说明
1.当传递一个指针时,我们可以通过指针对外修改它所指向的内容。但是不可能修改外部指针指向的对象。例如,如果将一个外部指针传递给一个函数allocate 空,则必须传递该指针或该指针的引用。
2.char carry7.const定义的int可以用来开数组,但是const定义的常量数组中的元素不能用来定义数组。= { 0 };编译器会将其后的所有内容设置为0;
3.当函数的返回值为const时,返回的东西在支付给同类型的标签后不能是left value
4.const int * I;int const * I;int * const I;前两个函数是一样的,这意味着我指向的内容保持不变;最后一条显示指针指向的地址不变,但内容是可变的。
5.类中的const成员函数。定义为在原型后添加const。常量函数不能修改类中的任何属性。但是有两种方法可以修改。
a){(my class *)this-> member 1 = values;}
b)将成员定义为可变的可以被常量函数修改。
6.类中的常量const类型不能用于定义类中的数组。和enum { ONE = 100二= 2 };定义的一和二可以。枚举定义的一般赋值问题:枚举A{ L=9,Z };z的值是10。
[10]
8.使用sizeof计算变量的空区间。如果是数组,按照实际空区间返回;常量字符串(实际上是在静态内存区域中打开的变量)sizeof返回比实际长度多1的值。如果是指针,则不考虑其所指向的空之间的大小,只返回指针类型的大小。如果使用sizeof计算函数的行参数,即使是组也只会返回相关类型指针的大小。
9.形状为int iarray[] = {12,124,433 };编译器会自动将三个元素的长度赋给iarray。计算元素个数的公式是sizeof(iarray)/sizeof(*iarray)。
10.复制构造函数:行参数和实参组合时,如果是复杂对象的值类型,则调用复制构造函数生成临时对象作为实参。当函数退出时,析构函数释放临时对象。当返回值是复杂对象时,还会调用复制构造函数来赋值。这就导致了构造函数和析构函数调用次数不等的情况。复制构造函数的原型是A(A&),我们可以在类中重载它。(默认的复制构造函数是位复制方法:浅复制,不复制指针指向的内容)。
1.volatile类型的变量告诉编译器该变量不需要代码优化。在多线程应用中,如果我们将一个变量读入寄存器,时间片将到期,其他线程将被处理。当我们重新获得处理器时,volatile类型告诉处理器将变量中的数据重新读入寄存器,而不是直接处理寄存器数据,这样可以防止脏数据。
12.class和struct在一定程度上具有相同的功能,只是前者的默认成员是私有的,而后者的成员默认是公共的。所以class不是c++的必要保留字
13.C和c++编译器编译的是相同的函数名,不同的标记,所以在引用C的库文件时,必须用extern“C”告诉编译器这是C的函数,按照C的规则编译。我们平时用的标准头文件已经处理过了。
14.#include“文件名”;#include,前者先在当前目录下寻找文件,找不到就去系统指定的路径,后者直接去系统指定的路径。
15.在任何地方赋值的静态变量与主进程具有相同的生命周期。第二次定义一个已有的静态变量对变量的内部使用没有影响,但是它的可见范围只在定义的范围内。(考研曾经犯过错误!)(从静态变量的特性不难理解,一个类中的静态类型是所有对象共享的)
16.内联函数在实现上其实类似于宏。在内联函数出现的地方展开函数,避免调用函数时出现堆栈,比如stack,提高效率。但是内联函数的代价是:代码增加。内联函数适用于成员函数和自由函数。类中实现的函数是自动内联函数。必须在函数的实现上定义内联。例如,inline int PlusOne(int)无效。friend函数在类的主体中实现,并自动成为一个内联函数。
17。#包括
#define DEBUG(X) cout
0条评论