类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。
1.类与对象
与Java语言类似,C++ 也是一门面向对象的编程语言,类与对象的关系这里不再赘述。
我们看下面实例:
students.h
#ifndef STUDENTS_H
#define STUDENTS_H
#include <iostream>
#include <string>
using namespace std;
class Students
{
public:
string sname;
string gender;
Students();
Students(string,string);
void introduce();
};
#endif // STUDENTS_H
students.cpp
#include "students.h"
Students::Students()
{
cout<<"一个学生诞生了..."<<endl;
}
Students::Students(string sname,string gender)
{
this->sname = sname;
this->gender = gender;
}
void Students::introduce(){
cout<<"您好,我叫:"<<this->sname<<",性别:"<<this->gender<<endl;
}
int main()
{
/*
//Students s1 ;
//Students s1= Students();
s1.sname="张三";
s1.gender="男";
s1.introduce();
*/
Students s1 = Students("张三","男"); //分配在栈内存
s1.introduce();
return 0;
}
运行结果:
一个学生诞生了...
您好,我叫:张三,性别:男
使用对象指针改下如下:
students.cpp
#include "students.h"
Students::Students()
{
cout<<"一个学生诞生了..."<<endl;
}
Students::Students(string sname,string gender)
{
this->sname = sname;
this->gender = gender;
}
void Students::introduce(){
cout<<"您好,我叫:"<<this->sname<<",性别:"<<this->gender<<endl;
}
int main()
{
Students *s1 =new Students();
s1->sname="李四";
s1->gender="女";
s1->introduce();
delete s1; //释放空间
return 0;
}
运行效果:
一个学生诞生了...
您好,我叫:李四,性别:女
2.用new与不用new创建对象的区别
内存分配有三种方式: