C-C++ Day03

类(类型),从具有共同特征的许多对象中,抽象出某种概念(eg:人、车)

类可以产生一个具体的实例(eg:人->张三)

类包括,名字Name;属性Attributes;功能或行为Behaviors(类里可有成员函数)

        用class、struct定义。其中,struct定义时,不需要typedef,直接student stu即可

概念之间可能存在一些关系,包含关系(eg:人与眼睛);继承(派生)关系(eg:人与教师),教师有人的一般特征,也有自身特有的特征

面向对象设计要考虑,多个(用户定义)类型之间的关系,继承(派生类)还是包含(由属性描述-eg:学生包含分数)

考虑访问权限,哪些是外部(类)可以访问的,哪些是仅有内部才能访问的

在类中定义成员函数时,可以在类体内定义(正常定义函数),也可以在类体外定义(如下)

        1.在类里声明函数,eg:void print();

        2.加类作用域,在类外实现(eg:student::,与类建立联系,不然就是一个普通的外部函数了)

                void student::print(){

                        ...

                }

this指针,成员函数的参数部分,实际上隐含了一个this指针

        stu.print();        //等价于print(&stu)(普通外部函数)

        void print(student* this){        //this指针指向调用该成员函数的对象,即this=&stu

                cout<<this->name<<this->score<<endl;

        }

访问控制,struct和class的区别:

        struct里的成员默认是public(:)(公开的),任何一个外部函数都能修改其数据,不安全;对外的接口

        class里的成员默认是private(:)(私有的),外部函数无法访问私有成员

想修改私有成员,只能使用公开的接口

构造函数,函数名和类名相同,且无返回值类型的成员函数,eg:默认构造函数student(){}

        默认构造函数,不带参数,或参数都有默认值

构造函数可以有多个

如果一个类没有默认构造函数,则无法创建该类型的数组。因为数组有多个对象,无法单个传参数,只能调用默认构造函数

友元函数(友元函数是一个外部函数),通过friend关键字,在类中声明外部函数,使得该外部函数可以访问此类对象的私有属性(eg:friend ostream& operator<<(ostream& o, student s);)

运算符重载,有的运算符只能作为外部函数(输入流、输出流),有的运算符只能作为成员函数(下标运算符),有的运算符两者都可以(p.operator+(q)-成员函数,和operator+(p,q)-外部函数)

throw,抛出异常

函数签名后,加const,表示常函数,就可以重载相同函数签名的函数们了

        double operator[](int i) const{...}

        double& operator[](int i) {...}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值