在哔哩哔哩学习的这个老师的C++面向对象高级语言程序设计教程(118集全)讲的真的很不错
实战一:

情况一:将所有代码写到一个文件main.cpp中
cpp
#include<iostream>
//不知道包含strcpy的头文件名称是什么,问ai可知
#include<cstring>
using namespace std;
class Person {
private:
int age;
public:
char name[32];
void set(int a, char b[32]);
int get_age(void);
//char get_name(void);这个函数应该将返回值改为字符指针型,便于返回整个字符串,修改如下
char* get_name(void);
};
void Person::set(int a, char b[32]) {
if (a < 100 && a>0) {
age = a;
}
else cout << "请输入正确的age" << endl;
strcpy_s(name, b);
}
int Person::get_age(void) {
return age;
}
char* Person::get_name(void) {
return name;//应该直接返回name,而不是返回name[32],这是返回的第三十三个元素
}
int main() {
Person p;
int p_age;
char p_name[32];
cout << "请输入您的年龄" << endl;
cin >> p_age;//要先将用户输入的值存入一个变量中
cin.ignore();//忽略输入缓冲区中的换行符,避免影响后续的 getline
cout << "请输入您的姓名" << endl;
cin.getline(p_name, 32);//是cin.getline,不要记错了,读取整行输入(包括空格)
p.set(p_age, p_name);
cout << "p的年龄是:" << p.get_age() << endl;//函数调用一定要加要加小括号,有没有参数都要加
cout << "p的姓名是:" << p.get_name() << endl;
}
情况二:分文件写
在Person.h中
cpp
#pragma once
//类的头文件:一般定义成员数据,声明成员函数
class Person
{
private:
int m_age;
char m_name[32];
public:
//初始化m_name和m_age
void init( const char* name, int age);
//设置name
void setname( const char *name);
//获取name
char* getname(void);
//设置age
void setage(int age);
//获取age
int getage(void);
//显示m_name和m_age
void showPerson(void);
};
在person.cpp中
cpp
#include "Person.h"
#include<string.h>
#include<iostream>
using namespace std;
//定义类的成员函数
void Person::init(const char* name, int age)
{
strcpy_s(m_name, name);
if (age >= 0 && age <= 100) {
m_age = age;
}
else {
cout << "年龄输入非法" << endl;
}
}
void Person::setname( const char* name)
{
strcpy_s(m_name, name);
}
char* Person::getname(void)
{
return m_name;
}
void Person::setage(int age)
{
m_age = age;
}
int Person::getage(void)
{
return m_age;
}
void Person::showPerson(void)
{
cout << "姓名:" << m_name << ", 年龄:" << m_age << endl;
}
在main.cpp中
cpp
#include<iostream>
#include"Person.h"
using namespace std;
int main() {
Person ob;
ob.init("lucy",18);
ob.showPerson();
ob.setage(60);
ob.getage();
ob.setname("Bob");
ob.getname();
ob.showPerson();
return 0;
}
- 分清楚了Person.h和person.cpp和main.cpp分别是干嘛的
- 认识了初始化函数怎么写
- cin.ignore()
- cin.getline()
- 大体感受了面向对象编程