类学习一

类学习一。(红皮书36-54)

                            2016.3.19

一、红皮书2.3.3提到的内置成员函数inline:

1、有点像define,inline是把这段函数嵌入到了主函数中,在简单的编程中适合规模小且频繁使用的函数。
2、在类体中定义的成员函数,C++会自动的置为内置函数处理,程序在调用这些函数的时候,并不是真正的执行函数的调用过程(保存返回地址并转到),而是把函数代码嵌入到函数的调用点。
3、类中的成员函数,如果在内部直接定义相当于inline display();若在外部定义,则默认不是inline函数。
4、若成员函数定义在外部,若声明为inline函数,则定义声明必须在同一个头文件中,但不利于信息隐蔽


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include  <iostream>
using namespace std;
//如果是struct,其中只包括数据不包括函数,函数在外部定义
//注意C++中允许这样声明一个类
struct Student//声明一个名为Student的结构体
{
    //里面是数据,没有函数
    int num;
    int name[100];
    char sex;
};
//声明两个结构体变量如下:
Student std1, std2;

/*--------------struct和class的对比------------------*/

//struct变成了class,类的生明中除了有数据还有函数,其中
//函数分为公私有,默认为私有
//注意C++中允许用struct声明一个类,默认所有的函数变量在没有声明的情况下为公有的
//即struct Students{}
class Students
{
public:
    int num;
    char sex;
    //可在内部直接定义,也可在外部定义(在外部定义是好习惯)
    //如果在内部直接定义相当于inline display
    //若在外部定义,则默认不是inline函数
    void display();
private:
    char name;
};

//类的声明与sturct相同
Students stu1, stu*;


//类外访问只能访问公有的
//-----------访问成员方式1------------------:
stu1.num;
stu1.display();
//--------访问成员的方式2-------------(定义指针):
stu=stu1;//使指针指向对象stu1
cout<<stu->sex;//输出指针指向对象的成员sex的值
//---------访问成员方式3---------------(使用引用):
Students &stu2=stu1;//引用stu2,并初始化为stu1
cout<<stu2.sex;

//在外部定义成员函数的格式:
void Students::display()//Students::代表这个函数属于哪个类,若不声明的话就是全局的
{
    cout <<  "num"<<num<<endl;
    cout << "name" << name << endl;
    cout << "sex" << sex << endl;
}

二、成员函数的存储方式

一个对象所占的空间大小只取决于数据成员所占的空间,与成员函数无关。(成员函数为公用的函数代码,每个对象使用同一个函数(this指针指定是那个函数在使用),但结果不同)即成员函数代码段不占用对象的存储空间

三、对对像成员的访问

见代码中的详细说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值