调用约定与类与对象初

_cdecl(c标准调用约定)

调用方开辟形参,调用方进行清理

_stdcall(Windows的标准调用约定)

调用方开辟形参内存,被调用方清理

_fastcall(快速调用约定)

两种情况:1.形参字节小于等于四

前两个形参值不开辟内存,寄存器带入被调用方

第三个形参开始和_stdcall调用约定相同

2.形参字节大于四

调用方开辟内存,被调用方清理内存

_thiscall(c++调用约定)(普通成员方法)

调用约定:规定符号的生成规则

形参的入栈顺序

形参的开辟和清理方式

类和对象:

函数的默认值:

压栈:是从右向左的,匹配:是从左向右的

如果实参存在,用实参,如果实参不存在,用默认值

函数的默认值:自右向左,依次设计(不能重复赋值)

const:

 const 修饰的变量叫常量
 编译期间将用到常量的地方替换成常量初始化的值

 定义常量时一定要初始化

 const修饰的全局变量是一个local的符号

零初始化:double();  int();    char   c=char();


c/c++相互调用:

extern"c"(以c的规则生成)

{

   extern  int Sum(int a,int b);

}

c++语法:把括号中的代码以c的方式处理

c++调用c:

extern"C"

{

    void test()

    {

    };

}

c调用c++:1.修改c++源文件中的代码

2.不能修改中间层

而且所有的c++编译器都有宏:cplusplus

调用约定与类与对象初_第1张图片
引用:

int  *p=&a;//指针

int  &b=a;//引用(底层实现是用指针来实现)

(1)一定要初始化

(2)不能引用不能取地址的数据

(3)引用不能再引用

  (4)引用使用的是引用的内存块

const  int &c=10;//引用临时量的内存块

cout<< b <

int  &b=a;

b=c;

&b=c;//一旦引用后无法改变的值

不能返回局部变量的指针或者引用

new与delete:

int *cpp=new  int();//加括号可以进行初始化

delete  cpp;

 

new:1.开辟数组2.初始化

delete:1.销毁资源2.释放空间

int  *parr=new   int [10] ();//10表示数组个数

delete[] parr;//为什么不允许初始化?

答:不知道开辟空间的大小,不知道这个值返回给哪个

1.new/malloc
  1.new 关键字,malloc 函数
  2.new 开辟空间 + 初始化  malloc 开辟空间
  3.new 自由存储区域  malloc 堆上
  4.new 抛出异常      malloc 内存不足 返回NULL
调用约定与类与对象初_第2张图片

调用约定与类与对象初_第3张图片

你可能感兴趣的:(C++)