c++ Day 3

函数

<type> <name>(<参数>)   //type:返回值的类型;参数需指明类型
{<函数体>}

  有且仅有一个主函数,程序从主函数开始,主函数调用其它函数,完成后返回主函数直至程序结束。


 分类

  •  内部函数 :仅在本文件供其他函数调用,一般用static使之局部化。
  •  外部函数 :可供其他文件调用,添加关键字extern。
  •  内联函数 : 定义在类体内的成员函数,关键字inline,在调用函数处,用内联函数体代码替换。
  •  外联函数 : 定义在类体外的成员函数。

返回值

  return 表达式; 


函数递归

  • 递归调用公式
  • 结束条件

函数指针

 函数名为函数入口地址,指向一个函数。

<type>  (*p_name)(函数形参)          函数指针名 = 函数名;(赋值)  f_p_name = f_name;

int *p1(int)    //p1是函数,有一个int形参,返回值是指向int的指针
int (*p2)(int)   //p2是一个函数指针,函数有int形参,返回值为int
int max(int a,int b);      //函数
int (*p_max)(int,int);   p_max = max;   //函数指针赋值
c = (*p)(a,b);   //函数指针调用函数max  

 类和对象

 


 类

  将一组对象的数据结构与操作组合在一起的集合,是对象的模板。

  •   声明类class
class stu{
private:       //访问规则
    int id;    //属性
    char* name;
public:        //访问规则
    float math,chinese,english;
    stu();     //构造函数,构造对象,初始化对象
    stu(char,float,float,float);   //重载构造
    ~stu();   //销毁对象时善后,退出程序前系统自动调用
    float average();    //一般函数
}

    如果函数在外定义,使用::    type class_name::f_name([<参数>]){ 函数体 }

  •     友元函数

    友元在类B中声明,类A中声明友元函数,但该函数不属于类A。

class B{
    private:
        int mm,nn;
    public:
        B(int I,int j);
        friend class A;  //声明A是友元类
}
class A{
    private:
        int x,y;
    public:
        A();
        friend int sum(A a);  //友元函数
        int sumB(B b);
}
int sum(A a){            //友元函数
    return(a.x+a.y);
}
int A:sumB(B b){
    return(b.mm+b.nn);    //访问B的私有属性mm,nn
}
int main(){
    B b(4,5);   A a(6,10);
    cout<<sum(a)<<endl;
    cout<<a.sumB(b)<<endl;
}

   类成员的指针:成员、函数

int stu::*p = &stu::math;    //type class_name::*P_name = &class_name::non_static_stt;
                             //调用非静态属性
s1.*p = 100;                 //通过类对象调用指针
int *ps = &stu::math;    //type *P_name = &class_name::static_att;调用静态属性
*ps = 10;                  //直接使用
int (stu::*p)() = &stu::f1;
    //type (class_name::*P_name)(形参) = &class_name::non_static_stt;
    //调用非静态函数f1
(s1.*p)();                  //通过类对象调用指针
int (*ps)() = &stu::f2;    //type *P_name = &class_name::static_att;调用静态函数f2
(*ps)();                  //直接使用

   


 对象

  •  定义对象
class_name instance_name_ord;   //定义对象  
class_name *p_instance_name;   //定义对象指针  
class_name instance_name[];   //定义对象数组  

instance_name_ord.att;          //普通对象调用  
p_instance_name->att;            //指针对象调用      (*p_instance_name).att;
instance_name_ord.function();       //普通对象调用   
p_instance_name->function();     //指针对象调用

 

  •  使用对象
  1.        对象数组:数组元素为对象。      class_name instance_name[];   //定义对象数组
  2.        对象指针:class_name *instance_name;
  •  this

    this指针指向类对象 ,通过类对象调用函数。在一个类的成员函数中使用,表示当前对象地址。

void Date::Month(int mn){
    month = mn;     //三个效果相同
    this->month = mn;
    (this).month = mn;
}

    

   

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值