Function overloading and const keyword

2343 단어
#include<iostream> 
using namespace std;

class Test {
protected:  
	int x; 
public:     
	Test(int i) : x(i) 
	{ 
	} 

	void fun() const
	{       
		cout<<"fun() const called "<<endl; 
	} 

	void fun()   
	{        
		cout<<"fun() called "<<endl; 
	}
};  

int main()
{    
	Test t1 (10);    
	const Test t2 (20);
	t1.fun();    
	t2.fun();  

	system("pause");
	return 0; 
} 

출력:
fun() called fun() const called
 
C++는 함수 매개 변수를 const 형식에 따라 다시 불러올 수 있지만, 매개 변수는 인용과 지침으로만 유효합니다.
case 1: 인자는 내장 형식입니다.
#include<iostream> 
using namespace std;  

void fun(const int i)
{     
	cout << "fun(const int) called "; 
} 

void fun(int i)
{     
	cout << "fun(int ) called " ;
} 

int main() 
{    
	const int i = 10;  
	fun(i);
	system("pause");
	return 0; 
} 

output:
컴파일 오류: 함수 재정의
 
case 2: 매개 변수는 포인터
#include<iostream> 
using namespace std; 

void fun(char *a)
{   
	cout<<"non-const fun() "<<a<<endl;
}  

void fun(const char *a) 
{   
	cout<<"const fun() "<<a<<endl;
}  

int main() 
{   
	const char *ptr = "csdn"; 
	fun(ptr);

	system("pause");
	return 0; 
} 

output: const fun() csdn
 
case 3: 매개 변수는 참조입니다.
#include<iostream> 
using namespace std; 

void fun(const int &i)
{     
	cout<<"fun(const int &) called "<<endl;
} 

void fun(int &i) 
{     
	cout<<"fun(int &) called "<<endl;
} 

int main() 
{    
	const int i = 10;  
	fun(i);

	system("pause");
	return 0;
} 

output:
fun(const int &) called

좋은 웹페이지 즐겨찾기