C++成员函数(Member Functions)
目录
C++成员函数(Member Functions)
1、成员函数定义(Member Function Definition)
2、内联(Inline)
3、常成员函数(Const Member Functions )
4、使用对象指针(Using Object Pointer)
5、重载成员函数(Overloading Member Functions)
6、测试代码(Testing Codes)
1、成员函数定义(Member Function Definition)
(1)成员函数一定从属于类,不能独立存在,这是它与不同函数的区别
(2)成员函数定义可以放在类定义中,也可以先在类定义中声明,然后在类定义之外进行定义
例如:
class Date{ ..... public: void set (int y,int m,int d){ /*定义类成员函数*/ year=y; month=m; day=d; } void isLeapYear() /*声明类成员函数*/ ..... }; /* "::"为空间引导符 */ void Date::isLeapYear(){ /*定义类成员函数*/ ..... }
讯享网
2、内联(Inline)
(1)目的:获取**性能
(2)要求:函数足够简单,不含有循环结构等
(3)分类:隐式内联,显示内联
(4)形式:使用inline关键字修饰

3、常成员函数(Const Member Functions )
(1)成员函数的操作,只对对象进行读操作,则该成员函数可定义为常成员函数
(2)形式:声明和定义形式上一致,使用关键字const修饰
(3)位置:在函数形参列表的右括号后面加上const
例如:
讯享网class Date{ int year,month,day; /*声明类成员变量*/ /*public 关键字表示可以提供给外界公有*/ public: /*默认内联*/ void set (int y,int m,int d){ /*声明类成员函数*/ year=y; month=m; day=d; } void isLeapYear()const; /*声明类成员函数*/ }; /*显示内联*/ inline void Date::isLeapYear()const{ /*定义类成员函数*/ ..... }
(4)倘若定义set成员函数为常成员函数,编译报错

4、使用对象指针(Using Object Pointer)
(1)一个类可以创建多个对象,每个对象都可调用该类的成员函数
(2)一般形式:ObjectName.MemberFunctionName(paramters);
(3)对象指针形式:ObjectPointer->MemberFunctionName(paramters);或(*ObjectPointer).MemberFunctionName(paramters);
5、重载成员函数(Overloading Member Functions)
(1)重载技术定义:c++可以根据函数参数的类型、数量和排列顺序的差异,来区分同名函数
(2)相应的同名函数称为重载函数
(3)返回类型不同不允许重载函数
6、测试代码(Testing Codes)
#include<iostream> #include<iomanip> #include<stdio.h> #include<string.h> #include<stdlib.h> using namespace std; class Date{ int year,month,day; /*声明类成员变量*/ /*public 关键字表示可以提供给外界公有*/ public: /*默认内联*/ void set (int y,int m,int d){ /*定义类成员函数*/ year=y; month=m; day=d; } void isLeapYear()const; /*声明类成员函数*/ void print()const; /*声明类成员函数*/ void set(char* s); }; void Date::set(char* s){ cout<<"重载->set"<<s<<endl; } /*显示内联*/ inline void Date::isLeapYear()const{ /*定义类成员函数*/ if(year%4==0 && year%100!=0 || (year%400==0)) cout<<" the leapyear "<<" "<<"->"; else cout<<" not leapyear "<<" "<<"->"; } void Date::print()const{ cout<<year<<'-'<<month<<'-'<<day<<endl; } int main() { Date d; d.set(2019,6,2); d.isLeapYear(); d.print(); /*使用对象指针(Using Object Pointer)*/ Date* dp=new Date; dp->set(2020,6,2); dp->isLeapYear(); dp->print(); /*重载成员函数(Overloading Member Functions)*/ Date e; char str[12]="2018-06-02"; char* strp=str; e.set(strp); }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/127166.html