当前位置: 首页 > news >正文

C++类与对象的第一个简单的实战练习-3.24笔记

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

实战一:

在这里插入图片描述

情况一:将所有代码写到一个文件main.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中
#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中
#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中
#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()
  • 大体感受了面向对象编程

相关文章:

  • 洛谷题单入门4-P5729 【深基5.例7】工艺品制作-python
  • 一文了解Gradle 依赖管理(五)- 依赖管理缓存依赖
  • K8S学习之基础四十五:k8s中部署elasticsearch
  • Spec2MP:项目管理之项目质量管理
  • oracle数据库(数据库启动关闭/sqlplus登录及基本操作/设置字符集/distinct去重)
  • 光流 | 基于光流的人体异常行为检测算法原理,公式,算法改进,matlab代码
  • 大模型应用(Java)2025/3/24
  • 运维面试题(八)
  • 《Python实战进阶》第31集:特征工程:特征选择与降维技术
  • PROE 与 STL 格式转换:开启 3D 打印及多元应用的大门
  • 【机器学习】什么是决策树?
  • FastStoneCapture免费版下载安装使用教程(附安装包)
  • 从零开始理解基于深度学习的语义分割模型:RCA与RCM模块的实现
  • 【项目合集】设备防丢失监控系统
  • C++List模拟实现|细节|难点|易错点|全面解析|类型转换|
  • 多粒度视频对象分割 前景修复 烟雾跟踪
  • 华为OD机试2025A卷 - 游戏分组/王者荣耀(Java Python JS C++ C )
  • 2025高频面试算法总结篇【字符串】
  • LCR 187. 破冰游戏(python3解法)
  • 坦克大战(c++)
  • 摩根士丹利:对冲基金已加码,八成投资者有意近期增配中国
  • 80后莆田市文旅局长马骏登台与杨宗纬合唱,“演唱会秒变旅游推介会”
  • 农行深圳市分行原副行长王国彪涉嫌严重违纪违法被查
  • 中国词学研究会原会长、华东师大教授马兴荣逝世,享年101岁
  • 洲际酒店:今年第一季度全球酒店平均客房收入同比增长3.3%
  • 国防部:奉劝有关国家不要引狼入室,甘当棋子