Qt学习笔记第21到30讲

第21讲 new/delete关键字

new关键字   

C++ 中, new 关键字用于动态分配内存。它是 C++ 中处理动态内存分配的主要工具之一,允许在程序运行时根据需要分配内存。

用法

①分配单个对象:使用 new 可以在堆上动态分配一个对象。例如, new int 会分配一个 int 类型的空间,并返回一个指向该空间的指针。

   int* ptr = new int; //C语言中,int *p = (int *)malloc(sizeof(int));
   cout<<sizeof (*ptr)<<endl;

分配对象数组new 也可以用来分配一个对象数组。例如, new int[10] 会分配一个包含10个整数的数组。

   int *arr=new int[10];
   arr[0]=0;

初始化:可以在 new 表达式中使用初始化。对于单个对象,可以使用构造函数的参数:

语法:

MyClass* obj = new MyClass(arg1, arg2);

示例:

#include <iostream>
#include <string.h>

using namespace std;

class Person
{
  private:
    string name;
    int    age;
  public:
    void printInfo(void);

    Person(string myName,int myAge)
    {
        this->name=myName;
        this->age=myAge;

    }
};

void Person::printInfo(void)
{
    cout<<"person's name:"<<this->name<<endl;
    cout<<"person's age:"<<this->age<<endl;
}

int main()
{
    Person* p1=new Person("Mike",18);
    (*p1).printInfo();



   return 0;
}

delete关键字

使用 new 分配的内存必须显式地通过 delete (对于单个对象)或 delete[] (对于数组)来释放,以避免内存泄露。

用法

①释放单个对象

delete ptr; // 释放 ptr 指向的对象

示例:

int main()
{
    Person* p1=new Person("Mike",18);
    (*p1).printInfo();
    delete p1;

   return 0;
}

②释放数组

delete[] arr; // 释放 arr 指向的数组

示例:

   int *arr=new int[10];
   delete[] arr;

注意事项

异常安全 :如果 new 分配内存失败,它会抛出 std::bad_alloc 异常(除非使用了 nothrow 版本 )。
内存泄露 :忘记释放使用 new 分配的内存会导致内存泄露。
匹配使用 delete delete[ ] :为避免未定义行为,使用 new 分配的单个对象应该使用
delete 释放,使用 new[ ] 分配的数组应该使用 delete[ ] 释放。

第22\23讲 拷贝构造函数与析构函数

参考拙作:C++语法补习课——对象特性-优快云博客

第24讲 静态成员

定义

静态成员在 C++ 类中是一个重要的概念,它包括静态成员变量和静态成员函数。静态成员的特点和存在的意义如下:

静态成员变量

1. 定义 :静态成员变量是类的所有对象共享的变量。与普通成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值