C++学习之类和对象

类和对象的关系

  • 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。
  • 类,是创建对象的模板,一个类可以创建多个相同的对象;对象,是类的实例,是按照类的规则创建的。

类访问修饰符

  • C++的类访问修饰符有三个:public、private、protected,在类主体的内部通过对各个区域标记类访问修饰符来对类成员的访问进行限制。
  • 一个类可以有多个public、private或protected标记区域,每个标记区域在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的
  • 成员和类的默认访问修饰符是private
  • protected表示保护成员,该成员只能被该类的成员函数或者派生类的成员函数访问;public表示公有成员,在类的外部是可访问的;private表示私有成员,在类的外部是不可访问的,甚至是不可查看的,只有类和友元函数可以访问私有成员。

友元函数:友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数

构造函数

  • 由类得到对象需要构造函数,系统会自动调用相应的构造函数;对象使用完之后需要释放占有的资源,系统就会自动调用相应的析构函数。
  • 构造函数的名字必须与类名同名,而不能由用户任意命名,以便编译系统能够识别他们并把他们作为构造函数处理
  • 构造函数不需要用户调用,也不能被用户调用。
  • 构造函数可以在类中定义,也可以在类外定义。
  • 构造函数不具有任何类型,也不返回任何值
  • 构造函数的功能是由用户定义的,用户根据初始化要求设计函数体和函数参数,但是一般不提倡在构造函数中加入与初始化无关的内容,以保持程序的清晰
  • 如果类说明中没有给出构造函数,则C++编译器自动给出一个缺省的构造函数,只是这个构造函数的函数体是空的,也没有参数,不执行初始化操作
  • 注意: 参数初始化顺序与初始化表列出的变量的顺序无关,它只与成员变量在类中的声明的顺序有关
  • 调用构造函数时不必给出实参的构造函数称为默认构造函数,一个类只能有一个默认构造函数。

析构函数

  • 析构函数也是一种特殊的成员函数,没有返回值,当对象的生命期结束时,会自动执行析构函数。
  • 析构函数的名字是在类名前面加一个“~”符号
  • 一般情况下,调用析构函数的次序正好与调用构造函数的次序相反,最先被调用的构造函数,其对应的析构函数最后被调用,而最后被调用的构造函数其对应的析构函数最先被调用(相当于在一个栈,先进后出)
  • 注意:并不是所有情况都按上述次序调用的,对象的作用域和存储类别也会影响他们的调用次序,这里不再赘述

样例

#include<iostream>
#include<string>
using namespace std;
class Student  ///声明学生类
{
public:     ///定义私有成员变量
    string sname;
    int sage;
    string sno;
public:
    ///定义构造函数,外部可访问
    Student(string name,int age,string no){
        sname=name;
        sage=age;
        sno=no;
        cout<<"调用构造函数"<<endl;
    }
    ///定义析构函数
    ~Student(){
        cout<<"调用析构函数"<<endl;
    }
    ///声明成员函数
    void Ater_Sno(string no);
    void Show(){
        cout<<"学生个人信息:"<<endl;
        cout<<"姓名:"<<sname<<endl;
        cout<<"年纪:"<<sage<<endl;
        cout<<"学号:"<<sno<<endl;
    }
};
///在类外部定义成员函数(一定要先声明)
void Student::Ater_Sno(string no){
    sno=no;
}
int main(){
    Student stu1("张三",12,"001");
    stu1.Show();
    stu1.Ater_Sno("003");
    stu1.Show();
}

运行结果:

调用构造函数
学生个人信息:
姓名:张三
年纪:12
学号:001
学生个人信息:
姓名:张三
年纪:12
学号:003
调用析构函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的小强呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值