← 返回首页
C++基础教程(四)
发表时间:2023-07-23 03:30:27
类与对象

类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(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创建对象的区别

内存分配有三种方式:

  1. 从静态存储区域分配,内存在编译期间就已经分配好,这块内存在整个运行期间都存在,例如static变量。
  2. 从栈上创建:函数内局部变量,自动分配与回收,效率高,但是分配的内存量有限。
  3. 从堆上创建:由程序员控制,malloc、new,free、delete。