在一个类中包含两种成员: 数据和函数,分别称为C++数据成员和成员函数。

关于类:

    类是C++新增加的重要数据类型,有了类,就就可以实现面向对象程序设计方法中的封装、信息隐蔽、继承、派生、多态等功能。

关于函数的重载

在编程时,有时我们要实现的是同一类的功能,只是有些细节不同。例如希望从3个数中找出其中的最大者,而每次求最大数时数据的类型不同,可能是3个整数、3个双精度数或3个长整数。

程序设计者往往会分别设计出3个不同名的函数,其函数原型为:
int max1(int a int b, int c); // 3个整数中的最大者
double max2(double a double b double c); // 3个双精度数中最大者
long max3(long a long b long c);// 3个长整数中的最大者

C++允许用同一函数名定义多个函数,这些函数的
参数个数和参数类型不同。这就是函数的重载(function overloading)overloading)。即对一个函数名重新赋予
它新的含义,使一个函数名可以多用

下面就是一个max()函数重载的例子

#include<iostream>
using namespace std;
int main()
{ int max(int a,int b,int c);
double max(double a,double b,double c);
long max(long a,long b,long c); int i1,i2,i3,i;
cin>>i1>>i2>>i3;
i = max(i1,i2,i3);
cout<<"i_max = "<<i<<endl; double d1,d2,d3,d;
cin>>d1>>d2>>d3;
d = max(d1,d2,d3);
cout<<"i_max = "<<d<<endl; long g1,g2,g3,g;
cin>>g1>>g2>>g3;
g = max(g1,g2,g3);
cout<<"g_max = "<<g<<endl; return ;
}

上例3个max函数的函数体是相同的,其实重载函数并不要求函数体相同。重载函数除了允许参数类型不同以外,还允许参数的个数

例4. 编写一个程序,用来求两个整数或3个整数中
的最大数。如果输入两个整数,程序就输出这两个
整数中的最大数,如果输入3个整数,程序就输出
这3个整数中的最大数。
#include <iostream>
using namespace std;
int main( )
{
int max(int a,int b,int c);
max(int a,int b,int
//函数声明
int max(int a,int b);
max(int a,int
int a=,b=-,c=; cout<< max(a,b,c)=′′<<max(a,b,c)<<endl //输出3个整数中的最大者
cout<<′′max(a,b,c)=′′<<max(a,b,c)<<endl; // cout<< max(a,b)=′′<<max(a,b)<<endl
cout<<′′max(a,b)=′′<<max(a,b)<<endl;
} 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(a>b)
return a;
else
return b;
}

函数模板的定义:

template < typename T> 或 template <class T>
通用函数定义

#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 = 56.67,d2 = 90.21,d3 = -321.35,d;
long g1 = ,g2 = -,g3= ,g;
i = max(i1,i2,i3);
d = max(d1,d2,d3);
g = max(g1,g2,g3);
cout << "i_max = "<<i<<endl;
cout << "f_max = "<<d<<endl;
cout << "g_max = "<<g<<endl;
return ;
}

sting函数的用法,c++ 里面独有的string变量,使用这个string相当强悍

#include<iostream>
#include <string>
using namespace std;
string name[],num[];
int n;
int main()
{
void input_data();
void search(string find_name);
string find_name;
cout<<"please input number of this class:";
cin >> n;
input_data();
cout<<"please input name you want to find:";
cin >> find_name;
search(find_name);
system("pause");
return ;
} void input_data()
{
int i;
for(i = ;i<n;i++)
{
cout<<"input name an NO.of student"<<i+<<endl;
cin>>name[i]>>num[i];
}
} void search(string find_name)
{
int i;
bool flag = false;
for(i = ;i<n ;i++)
{
if(name[i] ==find_name)
{
cout << name[i] << "has been found,his num is "<<num[i]<<endl;
flag = true;
break;
}
if(flag == false)
cout<<"can't find this name";
}
}

C++的笔记学习第一篇,认识C++的更多相关文章

  1. LINQ to XML LINQ学习第一篇

    LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...

  2. 从.Net到Java学习第一篇——开篇

    以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保 ...

  3. Java并发包下锁学习第一篇:介绍及学习安排

    Java并发包下锁学习第一篇:介绍及学习安排 在Java并发编程中,实现锁的方式有两种,分别是:可以使用同步锁(synchronized关键字的锁),还有lock接口下的锁.从今天起,凯哥将带领大家一 ...

  4. JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇

    JVM学习第一篇思考:一个Java代码是怎么运行起来的-上篇 作为一个使用Java语言开发的程序员,我们都知道,要想运行Java程序至少需要安装JRE(安装JDK也没问题).我们也知道我们Java程序 ...

  5. Eclipse插件开发 学习笔记 PDF 第一篇到第四篇 免分下载 开发基础 核心技术 高级进阶 综合实例

    <<Eclipse插件开发 学习笔记>>,本书由浅入深.有重点.有针对性地介绍了Eclipse插件开发技术,全书分为4篇共24章.第一篇介绍Eclipse平台界面开发的基础知识 ...

  6. Python学习第一篇

    好久没有来博客园了,今天开始写自己学习Python和Hadoop的学习笔记吧.今天写第一篇,Python学习,其他的环境部署都不说了,可以参考其他的博客. 今天根据MachineLearning里面的 ...

  7. Android基础学习第一篇—Project目录结构

    写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...

  8. ImageJ 学习第一篇

    ImageJ是世界上最快的纯Java的图像处理程序.它可以过滤一个2048x2048的图像在0.1秒内(*).这是每秒40万像素!ImageJ的扩展通过使用内置的文本编辑器和Java编译器的Image ...

  9. Python编程笔记(第一篇)Python基础语法

    一.python介绍 1.编程语言排行榜 TIOBE榜 TIOBE编程语言排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网有经验的程序员.课程和第三方厂商的数量. 2.pytho ...

随机推荐

  1. lintcode :Remove Duplicates from Sorted Array 删除排序数组中的重复数字

    题目: 删除排序数组中的重复数字 给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度. 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成.  样例 ...

  2. spring autoWire注解

    1.autowire注解,可以用来获得applicationContext,ResourceLoader,BeanFactory的注入 autoWire会获得相应资源 2.autoWire注解还可以用 ...

  3. Swift入门(十一)——类型转换与is、as操作

    三种操作:is.as?和as! Swift是强类型语言,但也允许开发者通过is.as?和as!这三种操作来对类型进行判断和强制转换.其中is用作类型判断,而as?和as!则分别是类型转换的可选形式和强 ...

  4. java:synchronized

    synchronized:利用上锁实现数据同步,避免多线程操作的情况下,数据出现异常. 另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块. 一个线程获得了一个对象的同步锁,那这个对象上所 ...

  5. Photoshop:制作方块背景

    1.填充背景色 2.滤镜->杂色->添加杂色 3.滤镜->像素化->马赛克 4.添加横线,明度-10 最终效果 附: 利用:查找边缘.最小值,还可以做这样的效果

  6. MapReduce 中的Map后,sort不能对中文的key排序

    今天写了一个用mapreduce求平均分的程序,结果是出来了,可是没有按照“学生名字”进行排序,如果是英文名字的话,结果是排好序的. 代码如下: package com.pro.bq; import ...

  7. 【POJ】3523 The Morning after Halloween

    1. 题目描述$m \times n$的迷宫(最大为$16 \times 16$)包含最多3个点,这些点可以同时向相邻方向移动或保持停止,使用小写字母表示起始位置,使用大写字母表示中止位置.求最少经过 ...

  8. Java IO 遇到的错误

    1.java.io.FileNotFoundException: /storage/emulated/0/xxx.txt: open failed: EISDIR (Is a directory) 该 ...

  9. Java开发之反射的使用

    通过类名获取类. Class serviceManager = Class.forName("android.os.ServiceManager"); 获取方法 Method me ...

  10. [UESTC1059]秋实大哥与小朋友(线段树, 离散化)

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1059 普通线段树+离散化,关键是……离散化后建树和查询都要按照基本法!!!RE了不知道多少次………………我真 ...