c++创建employee类含有指针
时间: 2023-12-30 22:04:53 浏览: 76
#include <iostream>
using namespace std;
class Employee {
private:
string name;
int age;
double *salary; // 指针变量
public:
Employee(string n, int a, double s) {
name = n;
age = a;
salary = new double; // 动态分配内存
*salary = s;
}
~Employee() {
delete salary; // 释放内存
}
void display() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Salary: " << *salary << endl;
}
};
int main() {
Employee e("Tom", 25, 5000.0);
e.display();
return 0;
}
相关问题
用C++写代码:创建一个 Employee 类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、ChangeName()、Display()的函数原型放在类定义中,构造函数初始化每个成员,Display()函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。将姓名构成类 Name,其名和姓在该类中为保护数据成员,其构造函数为接收一个指向完整姓名字符串的指针,其 Display()函数输出姓名。然后将Employee 类中的姓名成员(字符数组)换成 Name 类对象。将所有原型化的函数加上成员函数定义,作为类的内部实现文件构成完整的类库定义,要求类定义与类的成员函数定义分开。
以下是完整的类库定义:
Employee.h
```cpp
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include "Name.h"
class Employee {
protected:
Name name;
char address[100];
char city[50];
char state[50];
char zip[20];
public:
Employee(const char* fullName, const char* address, const char* city, const char* state, const char* zip);
void ChangeName(const char* fullName);
void Display() const;
};
#endif
```
Employee.cpp
```cpp
#include "Employee.h"
#include <iostream>
Employee::Employee(const char* fullName, const char* address, const char* city, const char* state, const char* zip)
: name(fullName) {
strcpy_s(this->address, address);
strcpy_s(this->city, city);
strcpy_s(this->state, state);
strcpy_s(this->zip, zip);
}
void Employee::ChangeName(const char* fullName) {
name = Name(fullName);
}
void Employee::Display() const {
std::cout << "Name: ";
name.Display();
std::cout << "Address: " << address << std::endl;
std::cout << "City: " << city << std::endl;
std::cout << "State: " << state << std::endl;
std::cout << "Zip: " << zip << std::endl;
}
```
Name.h
```cpp
#ifndef NAME_H
#define NAME_H
class Name {
protected:
char firstName[50];
char lastName[50];
public:
Name(const char* fullName);
void Display() const;
};
#endif
```
Name.cpp
```cpp
#include "Name.h"
#include <iostream>
Name::Name(const char* fullName) {
// Split full name into first and last names
int spaceIndex = strchr(fullName, ' ') - fullName;
strncpy_s(firstName, fullName, spaceIndex);
firstName[spaceIndex] = '\0';
strcpy_s(lastName, fullName + spaceIndex + 1);
}
void Name::Display() const {
std::cout << firstName << " " << lastName << std::endl;
}
```
创建一个employee类,该类中有姓名、城市、邮政编码等数据成员。成员函数setValue设定对象数据,display函数输出对象数据。 具体要求如下: (1)数据成员设定成private (2)成员函数设定成public (3)建立指针对象,利用指针对象对成员进行引用 (4)将类声明和成员函数的定义分开,放到.h和.cpp中
好的,我来回答你的问题。
首先,这是一个关于C++面向对象编程的问题。我们需要创建一个employee类,具体实现如下:
在employee.h文件中定义如下:
```cpp
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include <string>
class Employee {
public:
// 构造函数
Employee() {}
// 成员函数
void setValue(const std::string& name, const std::string& city, const std::string& zipCode);
void display();
private:
// 数据成员
std::string m_name;
std::string m_city;
std::string m_zipCode;
};
#endif // EMPLOYEE_H
```
在employee.cpp文件中定义如下:
```cpp
#include "employee.h"
#include <iostream>
using namespace std;
void Employee::setValue(const std::string& name, const std::string& city, const std::string& zipCode) {
m_name = name;
m_city = city;
m_zipCode = zipCode;
}
void Employee::display() {
cout << "Name: " << m_name << endl;
cout << "City: " << m_city << endl;
cout << "Zip Code: " << m_zipCode << endl;
}
```
然后,在main函数中,我们可以创建一个指针对象,对成员进行引用,具体实现如下:
```cpp
#include "employee.h"
int main() {
Employee* emp = new Employee();
emp->setValue("Tom", "Beijing", "100000");
emp->display();
delete emp;
return 0;
}
```
这样,我们就完成了一个简单的employee类的定义和使用。注意,我们将类的声明和成员函数的定义分开,放到了.h和.cpp文件中,这是面向对象编程的一种良好的习惯。
阅读全文