c++小知识点4.0

来源:互联网 发布:淘宝电商差评怎么回复 编辑:程序博客网 时间:2024/04/30 18:49

46.
函数中,如果加入inline(内联)则表示,该函数在编译时就被调用;
如果没有加入,则表示函数在运行时才被调用.

47.
A.要在使用前先声明,否则函数将出错.
B.函数参数表不能省略,如果没有任何参数,可以留空或用void代替.如.int fork(void)
C.参数表中不能出现同名参数.
D.数组不能作为返回值.如int [] foobar(); //错误
E.C++中,数组不会按值传递,它只传递第一个元素(0)的指针.
如:
void a(int[10]);
被视为:void a(int *);

以下等价:
void a(int *);
void a(int []);
void a(int [10]);

F.当不确定有多少参数的数目时,用省略号(……)表示.

void foo(a,…)

48.
两个函数同名,但参数表不同,这种函数叫做重载函数(overloaded function).

49.
extern 的使用:

extern int m = 7; //这样写是定义m,compiler会为它分配空间。
extern int m; //而这样写是声明,compiler不分配空间。

50.
return 表示结束当前正在执行的函数,程序将把控制权交给此函数.
return 0 表示正常退出.

51.
直接或间接的调用自已的函数称为递归函数.
如.求最大公约数.

int GetMax(int v1,int v2)
{
if (V2!=0)
return GetMax(v2,v1%v2)
return v1;
}

//阶乘
unsigned long Fac(int val)
{
if (val>1)
return val*Fac(val-1);
return 1;
}

52.

1,extern可以置于变量声明前;
2,extern也可以置于函数声明前;
通过这种行为它告诉编译器:该变量/函数的定义已经存在在某个地方了,让编译器到其他的模块去寻找它的定义。

extern 的作用是告诉编译程式,后面所做的宣告只供型别检查使用,不需要将之实体化。

详细的说法是,相同的符号 (无论是变数或函数) 被宣告时,只要冠上 extern,编译器在遇到这些宣告时,只会检查所宣告的型别是否和曾经出现过的发生冲突,并不会配置记忆体空间给该变数,也不会设定函数或变数的 scope 范围 (所有 extern 符号 scope 都是全域,即使出现在函数内的宣告也一样)。

53.
extern “C” ;//告诉编译,该函数是用其它语言编写.
如:
extern “C” void Exit(int);

注意:extern不能出现在函数内.

extern int i;//表示告诉编译器,在其他的某个地方存在一下这样的定义int i;

54.
main()函数的作用:
1.后面的参数瑾于在执行EXE程序时用到.如:ping -t;
2.标准C++要用int main(){}

55.
C++有三种形式的域:

局部域: 包含在函数定义中的程序文本区.
名字空间域:
类域:

56.
全局函数/对象占据了存储区的生命期,从程序启动开始,在程序结束时结束.

全局函数:全局域内声明的函数.
全局对象:全局内的变量声明.

57.
头文件的作用:
1.保证所有的文件都包含同一个声明.
2.最少的改动.

59.
当需要一个类型的对象共享一个变量时会用到 static

定义静态函数的好处:

<1> 其他文件中可以定义相同名字的函数,不会发生冲突

<2> 静态函数不能被其他文件所用。

类中的static成员:

  一、出现原因及作用:

  1、需要在一个类的各个对象间交互,即需要一个数据对象为整个类而非某个对象服务。

  2、同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见。

  类的static成员满足了上述的要求,因为它具有如下特征:有独立的存储区,属于整个类。

  二、注意:

  1、对于静态的数据成员,连接器会保证它拥有一个单一的外部定义。静态数据成员按定义出现的先后顺序依次初始化,注意静态成员嵌套时,要保证所嵌套的成员已经初始化了。消除时的顺序是初始化的反顺序。

  2、类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据和静态成员函数。

60.

new表达式的操作序列如下,从空闲存储区分配对象,然后用括号内的值初始化该对象.
例:int *pi=new int(0);

0 0
原创粉丝点击