c++ 创建对象

1.定义类 一般写在.h文件中

#include<string>
#include<iostream>
using namespace std;
void print(char content[]);
void TestString1();
void TestString2();
void TestString3();

class Person
{
private:
    int age;
public:
    string name;
    Person(string name);
    ~Person();
    void printName();
};

Person::Person(string name)
{
    this->name = name;
}

Person::~Person()
{
    cout << "~Person()" <<endl;
    age=0;
    name = nullptr;
}

void Person::printName()
{
    cout << name <<endl;
}

2.使用

不通过“new”关键字,在栈上创建
通过关键字“new”,在堆上创建
两种方式的区别

在栈中的对象,其作用范围只是在函数内部,函数执行完成后就会调用析构函数,删除该对象。使用 “.” 而不是 “->” 调用对象的方法。

在堆中的对象,必须要程序员手动的去管理该对象的内存空间 。用运算符“->”调用对象的方法。new出来的对象必须用指针指明地址。

#include<string>
using namespace std;
#include"test.h"
int main(){
    Person person("wang");          //在栈中创建对象
    Person pp = Person("aa");       //在栈中创建对象
    //Person *ppp;                    //只是声明对象 没有分配空间
    Person *p = new Person("aaa");  //在堆中创建对象
    p->printName();
   

    person.printName();
    TestString3();
                         
    string name ="abc";
    string name1("abc");
    string name2(10,'a');
    string name3(name1); //用name1构造name3
    string name4(name1,2);//用name1的前两个字符构造name4
    delete p;  //用完及时删除空间
    return 0;
}

静态对象

 (1)全局静态对象在程序执行 main() 之前已经分配好存储空间 ,在 main() 执行完成后进行释放。

(2)局部静态对象是从其所在函数第一次被调用时进行创建,直到整个程序结束才进行销毁;局部静态对象只有在第一次调用时进行初始化操作。

posted @ 2023-03-16 11:27  xiaowang_lj  阅读(30)  评论(0编辑  收藏  举报