C++(内存空间、引用、类)

内存空间

        使用流程

                分配内存空间,使用内存空间,回收内存空间

        使用函数

                new/delete

        注意

                new自带初始化,delete不带初始化

                new按类型分空间,delete按字节分空间

                new返回自己分配空间的类型指针, delete返回void*

引用

        概念

                为变量所创建的一个别名,与操作原变量的操作一样

        用法

                变量名 & 别名

        注意

                引用时必须初始化

                类型一致

                对象不可更改

                引用不可指向NULL        

        示例

                引用与指针

                引用与返回值

                引用与结构体

                引用与常量

函数

        默认参数

                当不对函数进行传参时,函数使用默认参数

        注意

                默认参数从最右边开始往左写,也就是靠右原则

                只在声明处加,定义处不能加

        函数哑元

                可看成占位符,对函数无影响

        注意

                占位参数必须传值

        函数重载

                同一函数名多次使用

        注意

                不同的函数参数与函数类型作为判断条件

        类的成员

                class关键字

          private:                声明私有成员变量

                只有类自己可使用

           protected:            声明保护成员变量

                只有类自己与继承的类可以使用

           public:                  声明公有成员函数

                都可使用

        例子

                假设有个女生

                她是单身(公有成员),谁都可以成为她的对象

                她不是单身(私有成员),现在她属于对象的对象

                她成家有子(保护成员),她属于丈夫与孩子的

#include <iostream>
#include <string>
#include <cstdlib>
#include <cstdio>
/*****************声明区**********************************************************************/
using namespace std;
/*****************内存空间分配**************************/
// 声明一个函数,返回一个指针变量,指向一个int数组,大小为10
int *fun()
{
    int *q = new int[10];
    return q;
}
/*****************引用与指针**************************/
// 声明一个指针变量w,并分配9个int的内存空间
int *w = new int[9];
// 声明函数,将两个变量的值互换
void fun(int &a, int &b)
{
    int c = a;
    a = b;
    b = c;
}
// 声明一个结构体
typedef struct A
{
    int x;
    struct A *next;
} A;
// 声明一个函数,返回一个指针变量,指向一个结构体,并初始化结构体变量
void funa(A *&p)
{
    // 分配新的内存空间
    p = (A *)malloc(sizeof(A));
    // 初始化结构体变量
    p->x = 10;
    p->next = NULL;
}
/*****************引用与返回值**************************/
// 返回静态局部变量
int &funA(const int &a, const int &b)
{
    // 局部变量
    static int c = a + b;
    cout << "静态局部变量:" << c << endl;
    return c;
}
int value = 10;
// 声明函数,返回一个引用变量,指向全局变量value
int &funa()
{
    return value;
}
/*****************引用与结构体**************************/
struct Z{
    // 声明一个结构体变量
    int X;
    // 声明一个引用变量
    int &Y;
};
/*****************引用与常量**************************/
int ADD(const int &a, const int &b){
    return a + b;
}
/*****************函数  默认参数**************************/
int funB(int a, int b = 100, int c = 200)
{
    return a + b + c;
}
// 函数声明时带默认参数,定义时不能带默认参数
int funC(int a, int b = 100, int c = 200);
/*****************函数  函数哑元**************************/
void funD(int a, int b,...)
{
    // 打印参数a和b
    cout << "a=" << a << " b=" << b << endl;
}
/*****************函数  函数重载**************************/
int funE(int a, int b){
    return a + b;
}
int funE(int a, int b, int c){
    return a + b + c;
}
/*****************类  访问控制**************************/
class AAA{
    // 声明私有成员变量
private:
    int x;
    // 声明保护成员变量
protected:
    int y;
    // 声明公有成员函数
public:
    AAA(){
        x = 0;
    }
    int getX(){
        return x;
    }
};
/*****************主函数**********************************************************************/
int main()
{
    /*****************内存空间分配**************************/
    cout << endl;
    cout << "内存空间分配" << endl;
    // 使用内存空间
    int *a = fun();
    // 给内存空间赋值
    *a = 10;
    cout << "显示内容:" << *a << endl;
    // 给3号位置赋值 内存名为w
    w[2] = 100;
    // 输出w数组内容
    for (size_t i = 0; i < 10; i++)
    {
        printf("第%ld组的内容", i);
        cout << w[i] << endl;
    }
    // 释放内存空间
    delete[] a;
    delete[] w;
    /*****************引用与指针**************************/
    cout << endl;
    cout << "引用与指针" << endl;
    // 调用函数进行值互换
    A *p1 = NULL;
    funa(p1);
    cout << "显示内容:" << p1->x << endl;
    // 释放内存空间
    free(p1);
    /*****************引用与返回值**************************/
    cout << endl;
    cout << "引用与返回值" << endl;
    // 调用函数,返回静态局部变量
    int &A = funA(101, 210);
    cout << "未修改的静态局部变量显示内容:" << A << endl;
    // 调用函数,返回全局变量
    int &B = funa();
    cout << "全局变量显示内容:" << B << endl;
    // 修改全局变量
    B = 20;
    cout << "修改后的全局变量显示内容:" << B << endl;
    // 再次调用函数,返回修改后的全局变量
    funa() = 900;
    cout << "修改后的全局变量显示内容:" << B << endl;
    /*****************引用与结构体**************************/
    cout << endl;
    cout << "引用与结构体" << endl;
    int X = 11;
    // 声明结构体变量
    Z z = {X, X};
    cout << "修改前的结构体变量X: " << z.X << endl;
    cout << "修改前的引用变量Y: " << z.Y << endl;
    X = 99;
    // 输出结构体变量
    cout << "修改后的结构体变量X: " << z.X << endl;
    cout << "修改后的引用变量Y: " << z.Y << endl;
    /*****************引用与常量**************************/
    cout << endl;
    cout << "引用与常量" << endl;
    int C = 999;
    const int &D = C;
    cout << "常量引用变量D: " << D << endl;
    int C1 = 1000;
    int C2 = 2000;
    cout<<"常量函数ADD(C1,C2): "<<ADD(C1,C2)<<endl;
    // 不能修改常量引用变量
    // 常量引用 引用常量
    const int &D1 = 190;
    const int C3 = 290;
    /*****************函数  默认参数**************************/
    cout << endl;
    cout << "函数  默认参数" << endl;
    cout << "funB(10,20,30): " << funB(10, 20, 30) << endl;
    cout << "funB(10,20): " << funB(10, 20) << endl;
    cout << "funB(10): " << funB(10) << endl;
    cout << "funC(10,20,30): " << funC(10, 20, 30) << endl;
    cout << "funC(10,20): " << funC(10, 20) << endl;
    cout << "funC(10): " << funC(10) << endl;
    /*****************函数  函数哑元**************************/
    cout << endl;
    cout << "函数  函数哑元" << endl;
    funD(10, 20, 30, 40, 50);
    /*****************函数  函数重载**************************/
    cout << endl;
    cout << "函数  函数重载" << endl;
    cout << "funE(10,20): " << funE(10, 20) << endl;
    cout << "funE(10,20,30): " << funE(10, 20, 30) << endl;
    /*****************类  访问控制**************************/
    cout << endl;
    cout << "类  访问控制" << endl;
    AAA aaa;
    cout << "公有成员函数getX()返回值:" << aaa.getX() << endl;
    return 0;
}
/*****************函数定义**********************************************************************/
/*****************函数  默认参数**************************/
int funC(int a, int b, int c){
    return a + b + c;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值