public: void setValue(const char nameV[], bool sexV, int ageV, float heightV, float weightV) { cout << "设置人的属性" << endl; strncpy_s(name, nameV, sizeof(name));//目标字符串指针,源字符串指针,目标字符串大小 sex = sexV; age = ageV; height = heightV; weight = weightV; }
时间: 2024-04-04 12:29:02 浏览: 104
这段代码是一个类的成员函数,用于设置人的属性。函数的参数包括人的姓名、性别、年龄、身高和体重,通过调用该函数可以将这些属性值设置给一个人对象。其中,strncpy_s函数用于将传入的姓名字符串复制到类成员变量name中。这个函数的作用是保证在复制字符串时不会发生内存溢出的情况。另外,函数中还打印了一条描述性的语句,用于说明函数的作用。
相关问题
#include <iostream> #include <string.h> using namespace std; class Person// 人 { public: void setValue(char nameV[], bool sexV, int ageV, float heightV, float weightV){ cout << "我知道怎么设置人的属性,我己完成!"<<endl; strncpy(name, nameV, sizeof(name));//姓名 sex = sexV;//性别 age = ageV; //年龄 height = heightV;//身高 weight = weightV;// 体重 } void print(){ cout << "我是一个人,我的属性值为:" << name << "," << sex << "," << age << "," << height << "," << weight << endl; } void eat(char obj[]){//吃(东西) cout<< "我是一个人" << name << ",但我还没有学会怎么吃:" << obj << endl; }; void sleep(void){//睡觉() cout<< "我是一个人" << name << ",我会睡觉,但还说不清楚是怎么睡觉的。" << endl; } public: char name[20];//姓名 bool sex; //性别 int age;// 年龄 float height;//身高 float weight;//体重 }; Person p1;//张三 void main(){ //设置张三("张三"1,18,180.5,65.3)的属性 p1.setValue("张三",1, 18, 180.5, 65.3); p1.eat("西瓜"); p1.sleep(); p1.print(); Person p2;//李四 cout<< endl; p2.setValue("李四", 0, 16, 165, 46.5); p2.print(); }修改代码
以下是修改后的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class Person {
public:
Person(char nameV[], bool sexV, int ageV, float heightV, float weightV) {
cout << "我知道怎么设置人的属性,我已完成!" << endl;
strncpy(name, nameV, sizeof(name)); // 姓名
sex = sexV; // 性别
age = ageV; // 年龄
height = heightV; // 身高
weight = weightV; // 体重
}
void print() {
cout << "我是一个人,我的属性值为:" << name << ","
<< sex << ","
<< age << ","
<< height << ","
<< weight << endl;
}
void eat(char obj[]) {
cout << "我是一个人" << name << ",我正在吃:" << obj << endl;
}
void sleep() {
cout << "我是一个人" << name << ",我正在睡觉。" << endl;
}
private:
char name[20]; // 姓名
bool sex; // 性别
int age; // 年龄
float height; // 身高
float weight; // 体重
};
int main() {
// 设置张三("张三"1,18,180.5,65.3)的属性
Person p1("张三", true, 18, 180.5, 65.3);
p1.eat("西瓜");
p1.sleep();
p1.print();
// 设置李四("李四",0,16,165,46.5)的属性
Person p2("李四", false, 16, 165, 46.5);
p2.print();
return 0;
}
```
修改说明:
1. 将类的属性设置函数 setValue() 改为类的构造函数 Person(),用于在对象创建时初始化对象的属性值。
2. 删除了类的 sleep() 和 eat() 函数中的输出,使输出更加符合人类的实际行为。
3. 将 main() 函数中的 p1 和 p2 对象的创建方式改为调用类的构造函数 Person()。
4. 在类的属性和函数声明后面加上了 private 和 public 关键字,用于指定属性或函数的访问权限。
#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 #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; } #include "employee.h" int main() { Employee* emp = new Employee(); emp->setValue("Tom", "Beijing", "100000"); emp->display(); delete emp; return 0; }
这是一个C++程序,定义了一个名为Employee的类,包含三个私有数据成员m_name、m_city和m_zipCode,以及三个公有成员函数setValue()、display()和一个默认构造函数。setValue()函数用于设置员工的姓名、城市和邮编信息,display()函数用于输出员工的姓名、城市和邮编信息。在main()函数中,先创建了一个Employee类型的指针emp,然后使用setValue()函数设置员工信息,最后使用display()函数输出员工信息,最后释放指针所指向的内存空间。
阅读全文