跳至主要內容

创建对象与返回局部变量地址

chanchaw小于 1 分钟cpp

概述

在函数中返回局部变量的地址需要通过 new 来创建对象,而不能采用通常的声明变量的方式

错误的创建方式

看下面代码,使用声明一般变量的方式在函数中创建对象并返回其指针的话,使用时会报错 一般方式创建对象

new方式创建对象

使用 new 方式创建的对象在外部使用就没有问题。同时也可以看出 new 创建对象后返回的是对象的指针

#include <iostream>
#include <string>
using namespace std;

class Employee {
public:
	int id;
	string name;
	Employee(int i, string n) { id = i; name = n; };
	string getName() { return name; }
};

Employee* getEmployee(int id,string name) {
	Employee e(id, name);
	return &e;
}

Employee* getEmployeeNew(int id, string name) {
	Employee* e = new Employee(id,name);
	return e;
}

int main()
{
	Employee* e1 = getEmployee(1001, "张三");
	Employee* e2 = getEmployeeNew(1002,"李四");
    std::cout << "employee.name:" << e2->name << endl;
	system("pause");
}