C++面向对象程序化设计(谭浩强)阅读笔记——回顾1

1.函数的重载:

#include <iostream>//函数的重载——不同类型或不同参数
using namespace std;
int max(int a,int b,int c)
{
	if (b>a) a=b;
	if(c>a)  a=c;
	return a;

}
int max(int a,int b)
{
	if(b>a) a=b;
	return a;
	
}

long max(long d,long e,long f)
{
	if (e>d) d=e;
	if(f>d)  d=f;
	return d;

}
int main()
{
	int a,b,c;
	long d,e,f;
	cin>>a>>b>>c;
	cin>>d>>e>>f;
    cin.get();

	cout<<max(a,b,c)<<endl;
	cout<<max(d,e,f)<<endl;
	cout<<max(a,b)<<endl;
	cin.get();
	


	return 0;

}
2.函数模版的运用

#include <iostream>
using namespace std;
template<typename T>
T max(T a,T b, T c)
{
	if (b>a) a=b;
	if(c>a)  a=c;
	return a;
}

int main()
{
	int i1,i2,i3,i;
	double d1,d2,d3,d;
	long g1,g2,g3,g;
	cin>>i1>>i2>>i3;
	cin>>d1>>d2>>d3;
	cin>>g1>>g2>>g3;
	cin.get();

	i=max(i1,i2,i3);
	d=max(d1,d2,d3);
	g=max(g1,g2,g3);

	cout<<"i_max="<<i<<endl;
	cout<<"d_max="<<d<<endl;
	cout<<"g_max="<<g<<endl;
	cin.get();
	return 0;
}
3.关于变量的引用:例如

#include <iostream>
using namespace std;
int main()
{
	int a=5;
	int &b=a;

	a=a*a;
	cout<<a<<endl<<b<<endl;
	cin.get();

	a=a/5;
	cout<<a<<endl<<b<<endl;
	cin.get();

	return 0;
}

4.引用作为函数参数

1)将变量名作为实参:

//以下程序无法实现i和j的互换
#include <iostream>
using namespace std;
int main( )
{ void swap(int,int);                 //函数声明
int i=3,j=5;
swap(i,j);                          //调用函数swap
cout<<i<<endl<<j<<endl;              //i和j的值未互换
cin.get();
return 0;
}

void swap(int a,int b)      //企图通过形参a和b的值互换,实现实参i和j的值互换
{ int temp;
temp=a;                             //以下3行用来实现a和b的值互换
a=b;
b=temp;
}

2)传递变量指针:

//以下程序可以实现i和j的互换
#include <iostream>
using namespace std;
int main( )
{ void swap(int *,int *);
int i=3,j=5;
swap(&i,&j);                            //实参是变量的地址
cout<<i<<endl<<j<<endl;   //i和j的值已互换
cin.get();
return 0;
}

void swap(int *p1,int *p2)              //形参是指针变量
{ int temp;
temp=*p1;                              //以下3行用来实现i和j的值互换
*p1=*p2;
*p2=temp;
}

3)传递变量的别名:

//以下程序也可以实现i和j的互换
#include <iostream>
using namespace std;
int main( )
{ void swap(int &,int &);
int i=3,j=5;
swap(i,j);
cout<<"i="<<i<<endl<<"j="<<j<<endl;
cin.get();
return 0;
}

void swap(int &a,int &b)             //形参是引用类型
{ int temp;
temp=a;
a=b;
b=temp;
}

5.可以用常量或表达式对引用进行初始化,还可以用不同类型的变量对之初始化,但是必须加const,例如:

int main()
{
	int a=5; //此时内部机制为:int temple=a+3;const &b=temple;temple为临时变量
	const int &b=a+3;

	double d=3.1415926;
	const int &c=d;
	
	cout<<a<<endl<<b<<endl;
	cout<<d<<endl<<c<<endl;
	cin.get();
	return 0;

}

6.内置函数:在函数首行左端加inline——将函数嵌入到主函数中,提高编译效率;

#include <iostream>//内置函数
using namespace std;
inline int max(int a,int b,int c)
{
	if (b>a) a=b;
	if(c>a)  a=c;
	return a;

}
int main()
{
	int a,b,c;
	cin>>a>>b>>c;
	cin.get();

	cout<<max(a,b,c)<<endl;
	cin.get();
	return 0;

}

7.字符与字符数组,例如:

#include <iostream>//比较大小
#include <string>
using namespace std;
string max(string  string1,string string2,string string3)
{
	if (string2>string1) string1=string2;
	if(string3>string1)  string1=string3;
	return string1;

}


int main()
{
	string string1,string2,string3,str;
	cin>>string1>>string2>>string3;
	str=max(string1,string2,string3);
	
	cin.get();


	cout<<"s_max="<<str<<endl;
	cin.get();
	return 0;

}

8.new与delete的使用,例如:

//开辟空间以存放一个结构体变量。
#include <iostream>
#include <string>        
using namespace std;
struct Student             //声明结构体类型Student
{ string name;
int num;
char sex;
};
int main( )
{ Student *p; //定义指向结构体类型Student的数据的指针变量
p=new Student; //用new运算符开辟一个存放Student型数据的空间
p->name="Wang Fun";    //向结构体变量的成员赋值
p->num=10123;
p->sex='m';
cout<<p->name<<endl<<p->num
<<endl<<p->sex<<endl;//输出各成员的值
cin.get();
delete p;//撤销该空间
cin.get();
return 0; 
} 

9.对象成员的引用

#include <iostream>
using namespace std;
class Time
{
public:
	int hour;
	int minute;
	void output(int hour,double minute)
	{
		this->hour=hour;
		this->minute=minute;
	}
	

};
int main()
{
	
	Time t,*p;
	t.output(16,36);
	cout<<t.hour<<endl;//通过指向对象的引用来访问对象中的成员
	cin.get();
	p=&t;
	cout<<p->hour<<endl;//通过指向对象的指针来访问对象中的成员
	cin.get();
	Time &t1=t;
	cout<<t1.hour<<endl;//通过对象名访问成员
	cin.get();
	return 0;
	
}


10.关于对象指针的用法:例如

#include <iostream>//有关指向对象成员的指针
using namespace std;
class Time
{public:
Time(int,int,int);
int hour;
int minute;
int sec;
void get_time( );
};
Time::Time(int h,int m,int s)
{hour=h;
minute=m;
sec=s;
}
void Time::get_time( ) //声明公有成员函数
//定义公有成员函数
{cout<<hour<<":"<<minute<<":" <<sec<<endl;}
int main( )
{Time t1(10,13,56); //定义Time类对象t1
int *p1=&t1.hour; //定义指向整型数据的指针变量p1,并使p1指向t1.hour
cout<<* p1<<endl; //输出p1所指的数据成员t1.hour
t1.get_time( ); //调用对象t1的成员函数get_time
Time *p2=&t1; //定义指向Time类对象的指针变量p2,并使p2指向t1
p2->get_time( ); //调用p2所指向对象(即t1)的get_time函数
void (Time::*p3)( ); //定义指向Time类公用成员函数的指针变量p3
p3=&Time::get_time; //使p3指向Time类公用成员函数get_time
(t1.*p3)( ); //调用对象t1中p3所指的成员函数(即t1.get_time( ))

cin.get();
return 0;
} 





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值