C++在实例化对象的时候,系统会发生两件事情:
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站建设、成都网站制作、简阳网络推广、小程序制作、简阳网络营销、简阳企业策划、简阳品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联为所有大学生创业者提供简阳建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com1.自动为对象分配内存
2.自动调用构造函数来初始化那块内存。
3.malloc不能为内存初始化,所以我们在C++中使用new和delete
1、和 malloc calloc realloc 比较1、malloc必须返回一个指针,返回值还是void类型,c++不允许将void赋值给其他任何指针,必须强转。
2、malloc 可能申请失败,必须判断返回值来确定是否申请成功。
3、malloc 不会调用构造函数,free不会调用析构函数。
2、给基本类型申请、释放空间int *p ;
p = new int (100) // *p = 100;
delete p;
3、给基本数组类型申请、释放空间int * arr = new int[100]{1,2,.......,100};//100个整型元素
char *arr = new char[100] ; // 100个字符类型元素
delete []arr ; //new 的时候有[],释放的时候就要有[];
char *arr = new char[32]{"hehe"} // err ;
只能一个一个写进去 或者不初始化然后使用strcpy拷进去
char *arr = new char[32]{'h','e','h','e'};
char *arr = new char ;
strcpy(arr,"hello,wrold");
for(int i =0;i
4)给类对象申请空间#includeusing namespace std;
class person{
private: char m_name[32];
int m_age;
public: person(char *name ,int age)
{
strcpy(m_name,name);
m_age = age;
cout<<"构造函数"<showperson();
delete ob1;
}
运行结果:
分析:使用new的时候会自动调用构造函数,使用delete的时候会自动调用析构函数。
5)对象数组void test03()
{
person *arr = new person[2]{person("lucy",12),person("bob",13)};
//指针访问
arr->showperson();
(arr+1)->showperson();
//数组下标访问
arr[0].showperson();
arr[1].showperson();
//数组下标等同于指针偏移量
(*(arr)).showperson();
(*(arr+1)).showperson();
delete [] arr;
}
运行结果:
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款