c++ 成员函数

C++成员函数(Member Functions) 目录 C++成员函数(Member Functions) 1、成员函数定义(Member Function Definition) 2、内联(Inline) 3、常成员函数(Const

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);

		
}

 

知秋君
上一篇 2024-07-30 20:02
下一篇 2024-07-30 19:36

相关推荐