在嗶哩嗶哩學習的這個老師的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();//忽略輸入緩沖區中的換行符,避免影響后續的 getlinecout << "請輸入您的姓名" << 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_agevoid init( const char* name, int age);//設置namevoid setname( const char *name);//獲取namechar* getname(void);//設置agevoid setage(int age);//獲取ageint getage(void);//顯示m_name和m_agevoid 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()
- 大體感受了面向對象編程