类的实例化

Posted 康小武

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类的实例化相关的知识,希望对你有一定的参考价值。

C++中类的实例化有两种方式——在栈中实例化和在堆中实例化

在栈中实例化为静态分配内存,不需要手动回收,超出内存系统报错。

在堆中实例化为动态分配内存,需要使用delete回收。

#include<iostream>
#include<string.h>
#include<cstdio>
using namespace std;
class Person
{
public:
    int age;
    string name;
    int sex;
public:
    Person(int age,int sex,string name)
    {
        this->age=age;
        this->sex=sex;
        this->name=name;
    }
    int getAge();
    int getSex();
    string getName();
};
int Person::getAge()
{
    return this->age;
}
int Person::getSex()
{
    return this->sex;
}
string Person::getName()
{
    return this->name;
}
ostream &operator<<(ostream &os,Person &p)
{
    os<<p.getAge()<<" "<<p.getSex()<<" "<<p.getName();
    return os;
}
ostream &operator<<(ostream &os,Person *p)
{
    os<<p->getAge()<<" "<<p->getSex()<<" "<<p->getName();
    return os;
}
int main()
{
    //在堆中实例化
    Person *p1 = new Person(1,1,"name1");
    //在栈中实例化
    Person p2(2,2,"name2");
    cout<<p1<<endl;
    delete p1;
    cout<<p2<<endl;
}

在堆中实例化需要用指针来接收实例化的对象。

以上是关于类的实例化的主要内容,如果未能解决你的问题,请参考以下文章

有条件地导入 python 类的片段

c# 中类的实例化

启用 Proguard 后无法实例化片段

Android - 试图实例化一个不是片段的类

如何将自定义代码注入 Swift 中内置类的每个实例化?

java 动态片段实例化