引用和重载
内存四区
栈区(临时变量,函数体结束就释放)
堆区(程序员操作空间)
代码区(代码存储空间)
全局区(存放全局变量、静态变量、常量)
1,引用 = 给变量取别名
张三小名:三儿,三儿长一岁,张三也涨一岁
引用的数据是存在于全局区,相当于全局变量
#include<iostream>
#include<stdio.h>
using namespace std;
int test1(int a) //值传递
{
a=a+1;
return a;
}
void test2(int* a) //地址传递
{
*a = *a + 1;
}
void test3(int& a) //引用传递,使用引用作为参数
{
a = a + 1;
}
void main()
{
int a=10;
a=test1(a);
cout << a << endl; //a的值并没有改变
test2(&a);
cout << a << endl; //使用地址传递
int& c = a; //c引用a
test3(c); //应用传递
cout << a << endl;
}
对于不擅长指针的程序员,可以使用引用
2,重载= 重定义函数
1、函数的参数个数不同。
2、函数的参数类型不同或者参数类型顺序不同
int a(int b);
int a(char b,int c);
int a(int c,char b);
都被认为是不同的函数
函数的默认行参和占位符
//add(10,10,10)==add(10,10,10) 如果给值,按给的来
//add(10)==add(10,20,10) 不给按默认的来
void add(int a, int b=20, int c=10);
//int =20 占位,且默认为20,无法使用的数
void add2(int a, int = 20, int c = 10);
void add3(int a, int, int c = 10);
对象和类
new和delete
new取代了c中malloc
等同
int* p = new int == int p=new (int)malloc(sizeof(int))
delete p == free§
classs类
可加入函数成员的结构体
自带成员初始化(构造函数)和成员释放(析构函数)
析构和构造也可以自己写
构造函数会在每次使用类之前执行
析构函数会在当前函数执行结束后执行
构造函数又分为:有参构造,无参构造,拷贝构造
class MyClass
{
public: //公有成员,在类内类外都可访问
MyClass();
~MyClass();
private: //私有,仅在类内可以访问
int a;
protected: //受保护的成员,类内,类外都不可访问
};
MyClass::MyClass() //构造函数,即类名
{
a = 10;
}
MyClass::~MyClass() //析构函数,构造函数前+~
{
}