1.创建Person类 属性:名字(name),年龄(age),年级( grade) 方法: 1、无参无返回值的student方法,描述为:我是一名大学生! 2、带参数方法sexStu,描述为:我是一个**生!(其中,**为传入参数) 3、无参无返回值的mySelf方法,介绍自己的姓名、年龄、年级(参数参考效果图) 2. 创建含主方法的测试类PersonTest类 实例化对象,传入参数,调用无参无返回值的student和mySelf方法及带参方法sexStu
时间: 2023-05-14 20:05:05 浏览: 136
好的,让我来帮您创建一个Person类。在C++中,可以这样定义一个Person类:
```cpp
class Person {
public:
// 构造函数
Person(std::string name, int age) : name_(name), age_(age) {}
// 成员函数
void sayHello() {
std::cout << "Hello, my name is " << name_ << ", and I'm " << age_ << " years old." << std::endl;
}
private:
std::string name_;
int age_;
};
```
这个Person类有两个私有成员变量:name_和age_,以及一个公有成员函数sayHello(),用于打印出Person对象的姓名和年龄。在创建Person对象时,需要传入一个姓名和一个年龄。例如,可以这样创建一个Person对象:
```cpp
Person p("Tom", 20);
p.sayHello(); // 输出:Hello, my name is Tom, and I'm 20 years old.
```
希望这个回答能够帮到您!
相关问题
为什么<>中写 class Person 会报错:template<> bool myCompare<Person>(Person& p1, Person& p2) { if (p1.m_Name == p2.m_Name && p1.m_Age == p2.m_Age) { return true; } else { return false; } }
在函数模板具体化的语法中,`<>` 内应该写上模板参数类型,而不是类名。因此,正确的语法应该是:
```c++
template<>
bool myCompare<Person>(Person& p1, Person& p2) {
if (p1.m_Name == p2.m_Name && p1.m_Age == p2.m_Age) {
return true;
} else {
return false;
}
}
```
这里的 `Person` 是模板参数类型,用于指定具体化版本针对的类型。注意,`Person` 前面需要加上 `typename`,否则编译器会把 `Person` 当作一个成员变量或成员函数名。
为什么<>中写 没有写东西:template<> bool myCompare<Person>(Person& p1, Person& p2) { if (p1.m_Name == p2.m_Name && p1.m_Age == p2.m_Age) { return true; } else { return false; } }
在函数模板具体化的语法中,可以省略模板参数类型,编译器会自动根据函数参数类型来推导模板参数类型。因此,下面的代码也是正确的:
```c++
template<>
bool myCompare(Person& p1, Person& p2) {
if (p1.m_Name == p2.m_Name && p1.m_Age == p2.m_Age) {
return true;
} else {
return false;
}
}
```
这里的 `myCompare` 是针对 `Person` 类型的具体化版本,编译器会根据函数参数类型 `Person&` 推导出模板参数类型。因此,`<>` 中可以省略模板参数类型。