写一篇基础文章 讲一下类与对象这个东西,比较深的概念就不讲了。 类顾名思义 也就是某种具有相同特点的东西的集合,比如车类身上含有轮胎,座位,发动机等,这些东西的集合构成了一个车类,在这里我以学生作为开端,后面会讲解到继承,多态等先基础开始。 首先!看图! private是完全私有的,只有自己可以访问,派生类和外部都不可以访问 protected是受保护的,只有派生类可以访问,外部不能访问 public权限是最大的,可以内部调用,实例调用等。 这个详细就不说了,可以去参考课本讲解 大概都差不多。 然后我们来定义类! 首先 类的定义 一定是这样的! class 名字{ }; 这样的结构! 后面那个分号别漏了!一般定义类的时候都会带有分号! 但是还有一个重点 那就是名字首字母一定是大写!大写!大写!记住了 一定是大写!
来看代码片段! 思路!: 1.类是包含有成员变量跟成员函数的集合,所以看到了有成员变量跟成员函数 2.有人会说你怎么都是私有成员变量!当然你也可以别的属性,public也行,protect也行,在这里我统一用private! 3.成员函数也分有public,private,protect,看你想实现什么功能而定!在这里我只用public! 4.定义了类下一步想着的一定是初始化!一定是初始化!初始化的操作有一个专业名词!叫构造函数! 5.构造函数有一个特点! 那就是一定跟类同名!一定要记住!!!! 构造函数分为带参数构造跟不带参数构造!,无参构造就算你自己不写!系统也会默认给你来一个无参构造! 当然自己写比较好,带参数构造会比较方便,记住! 带参数构造一定要对应好你的参数是什么类型! 比如 int,float等! 一定要对应! 6.还有一点!析构函数很重要! 析构函数很容易记 就是无参构造函数前面加个波浪线就行了 结构: ~类同名(); 析构函数就是释放内存用的!
#include<iostream>
#include<string>
using namespace std;
class Student
{
private:
int age;
int height;
string sex;
string numb;
public:
Student();
Student(int a, int h, string s, string n);
~Student();
void Print_Message();
void StudentShow();
};
我为了我的类看起来不那么拖拉!就是看起来简洁点!我选择类外构造! 类外定义的概念讲一下!
- 首先一定要带上类名 类名后面接的是作用域!(::)就是这个符号
也就是 类名::函数名()! 2.要注意! 如果你的成员函数有类型!比如int,void什么的 一定要带上 在类名的前面! 假如我有个void类型的成员函数 那么就是这样:void 类名::函数名(),括号里带参还是不带参取决于你前面怎么定义就怎么来!!
我先把这三个有点相同的一起写!
Student::Student()
{
cout << "我是无参构造" << endl;
}
Student::Student(int a, int h, string s, string n)
{
cout << "有参构造初始化!" << endl;
this->age = a;
this->height = h;
this->sex = s;
this->numb = n;
}
Student::~Student()
{
cout << "调用了析构函数!内存释放!" << endl;
}
来!行为函数!看一下看 也没什么特别的就有啥输出啥唯独是作用域 好好看作用域! 看透了! 返回类型+类名+作用域+函数名()
void Student::StudentShow()
{
cout << "学生在学习!在写作业!" << endl;
}
void Student::Print_Message()
{
cout << "这个学生的年龄:" << this->age << endl;
cout << "这个学生的身高:" << this->height << endl;
cout << "这个学生的性别:" << this->sex << endl;
cout << "这个学生的学号:" << this->numb << endl;
cout << "==============================================" << endl;
}
好 接下来我们来创建对象! 无参的对象:类名+名; 有参的对象:类名+名(把前面定义的参数类型传进去!); 析构函数一定要放到最后 因为是释放内存的 一定要注意! 如果无参构造出来的对象想要赋值!一定要定义set()跟get()函数这里就不说了!
对象一旦创建了,就是默认性的调用构造函数 有几个对象就默认的调用了几次 比如代码中Student s1; 它一旦创建了就会直接s1.Student() 当然里面是不能这么写的 知道一下原理就行!
int main()
{
Student s1;
Student s2;
cout << "==============================================" << endl;
Student s3(18, 170, "男", "20124026");
Student s4(17, 165, "女", "20124025");
cout << "==============================================" << endl;
cout << "学生的行为" << endl;
s1.StudentShow();
s2.StudentShow();
s3.StudentShow();
s4.StudentShow();
cout << "==============================================" << endl;
cout << "输出学生的信息" << endl;
s1.Print_Message();
s2.Print_Message();
s3.Print_Message();
s4.Print_Message();
cout << "==============================================" << endl;
cout << "析构函数" << endl;
s1.~Student();
s2.~Student();
s3.~Student();
s4.~Student();
return 0;
}
来 我们直接上主要测试代码
#include<iostream>
#include<string>
using namespace std;
class Student
{
private:
int age;
int height;
string sex;
string numb;
public:
Student();
Student(int a, int h, string s, string n);
~Student();
void Print_Message();
void StudentShow();
};
Student::Student()
{
cout << "我是无参构造" << endl;
}
Student::Student(int a, int h, string s, string n)
{
cout << "有参构造初始化!" << endl;
this->age = a;
this->height = h;
this->sex = s;
this->numb = n;
}
Student::~Student()
{
cout << "调用了析构函数!内存释放!" << endl;
}
void Student::StudentShow()
{
cout << "学生在学习!在写作业!" << endl;
}
void Student::Print_Message()
{
cout << "这个学生的年龄:" << this->age << endl;
cout << "这个学生的身高:" << this->height << endl;
cout << "这个学生的性别:" << this->sex << endl;
cout << "这个学生的学号:" << this->numb << endl;
cout << "==============================================" << endl;
}
int main()
{
Student s1;
Student s2;
cout << "==============================================" << endl;
Student s3(18, 170, "男", "20124026");
Student s4(17, 165, "女", "20124025");
cout << "==============================================" << endl;
cout << "学生的行为" << endl;
s1.StudentShow();
s2.StudentShow();
s3.StudentShow();
s4.StudentShow();
cout << "==============================================" << endl;
cout << "输出学生的信息" << endl;
s1.Print_Message();
s2.Print_Message();
s3.Print_Message();
s4.Print_Message();
cout << "==============================================" << endl;
cout << "析构函数" << endl;
s1.~Student();
s2.~Student();
s3.~Student();
s4.~Student();
return 0;
}
|