C++类和对象


1.类的定义

class Student

{

 public :

//成员变量

char *name;

int age;

float  score;

//成员函数

void say()
{

  cout<<name<<"的年龄是"<<age<<"的分数为"<<"score"<<endl;

}

};//注意分号不要忘了写

class 是c++关键字,用来定义类,Student 是类的名称,{ }内部是类所包含的成员变量和成员函数,public也是 C++ 的新增关键字,它只能用在类的定义中,表示类的成员变量或成员函数具有“公开”的访问权限,类可以理解为一种新的数据类型,该数据类型的名称是 Student。与 char、int、float 等基本数据类型不同的是,Student 是一种复杂数据类型,可以包含基本类型,而且还有很多基本类型中没有的特性。

2.创建对象

有了 Student 类后,就可以通过它来创建对象了,例如:

Student liLei;  //创建对象
Student 是类名, liLei 是对象名。这和使用基本类型定义变量的形式类似:
int a;  //定义整型变量
从这个角度考虑,我们可以把 Student 看做一种新的数据类型,把 liLei 看做一个变量。

在创建对象时,class 关键字可要可不要,但是出于习惯我们通常会省略掉 class 关键字,例如:
class Student LiLei;  //正确
Student LiLei;  //同样正确
除了创建单个对象,还可以创建对象数组:
Student allStu[100];
该语句创建了一个 allStu 数组,它拥有100个元素,每个元素都是 Student 类型的对象。

3.访问类的成员

创建对象以后,可以使用点号.来访问成员变量和成员函数,这和通过结构体变量来访问它的成员类似。

例子1:

#include <iostream>

using namespace std;

//类通常定义在函数外面

class Student

{

  public:

 char *name;

int age;

float score;

void say()

{

  cout<<"name"<<"的年龄是"<<"age"<<"的分数是"<<"score"<<endl;

}

}

//主函数

int  main()

{

 Student stu;

stu.name="小军"

stu.age=20;

stu.score=90;

stu.say();

return 0;

}:

3.使用对象指针

C语言中经典的指针在 C++ 中仍然广泛使用,尤其是指向对象的指针,没有它就不能实现某些功能。

上面代码中创建的对象 stu 在栈上分配内存,需要使用&获取它的地址,例如:

Student stu;
Student *pStu = &stu;
pStu 是一个指针,它指向 Student 类型的数据,也就是通过 Student 创建出来的对象。

当然,你也可以在堆上创建对象,这个时候就需要使用前面讲到的 new 关键字,例如:
Student *pStu = new Student;
在栈上创建出来的对象都有一个名字,比如 stu,使用指针指向它不是必须的。但是通过 new 创建出来的对象就不一样了,它在堆上分配内存,没有名字,只能得到一个指向它的指针,所以必须使用一个指针变量来接收这个指针,否则以后再也无法找到这个对象了,更没有办法使用它。 也就是说,使用 new 在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。

栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除。在实际开发中,new 和 delete 往往成对出现,以保证及时删除不再使用的对象,防止无用内存堆积。


例子2:

#include <iostream>
using namespace std;

class Student{
public:
    char *name;
    int age;
    float score;

    void say(){
        cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl;
    }
};

int main(){
    Student *pStu = new Student;
    pStu -> name = "小明";
    pStu -> age = 15;
    pStu -> score = 92.5f;
    pStu -> say();
    delete pStu;  //删除对象

    return 0;
}

C++动态分配内存 new

C++释放内存     delete 
 int   *p = new int;
delete p;

如果是分配一组连续的数据,则需要使用new[]  例如

 int *p = new int[10];  //分配10个int型的内存空间

delete[] p;
 Student *pStu = new Student;//创建对象指针
 delete pStu;


new分配的内存需要delete释放   new[]分配的内存需要delete[]释放,两者之间,一一对应。

4。引用

引用就是别名,对别名的操作就是对原名的操作

int &rnum = num;

rnum是整形变量num的别名,对rnum的操作就是对num 的操作。

例子:

#include <iostream>

using namespace std;

int main(void)

{

 int a;

int &b=a;

a=200;

cout<<"b="<<b<<endl;

b=0;

cout<<"a="<<a<<endl;

}

结果为 200,a=0.



















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值