c++自学笔记第五次

代码重用是现代程序设计追求的一个重要目标,模板有效地软件重用。模板和异常处理都是c++的重要机制。利用模板可以大大缩短了程序的长度。

#include<iostream>

using namespace std;

template<class T>

class A{

T x;

T y;

public:

A(T a,T b){

x=a;

y=b;

}

void display(){

cout<<x<<"+"<<y<<"i"<<endl;

}

};

int main(){

A<int>a1(2,3);

A<double>a2(4.3,5.3);

a1.display();

a2.display();

return 0;

}

函数模板

#include<iostream>

using namespace std;

template<class T>

T sum(T a,T b){       //加法模板

return a+b;

}

int isum(int a,int b){  //整数加法

return a+b;

}

float fsum(float a,float b){ // 实数加法

return a+b;

}

int main(){

cout<<"isum(2,3)="<<isum(2,3)<<endl;

cout<<"fsum(3.5,4.12)="<<fsum(3.5,4.1)<<endl;

cout<<"sum(2,3)="<<sum(2,3)<<endl;

cout<<"sum(3.5,4.12)="<<sum(3.5,4.1)<<endl;

return 0;

}

sum其实相当于若干个函数的组合,对于不同的参数类型,sum可以返回不同的结果

异常处理是c++的一个特点,它能够检测到程序运行错误后终止程序,并按照指定的方法对错误进行处理,当异常被处理完之后,程序又开始运行。

#include<iostream>

using namespace std;

class YC{};

int main(){

double a,b,c;

cin>>a>>b>>c;

try{

if(c==0)

throw YC();

cout<<a<<"+"<<b<<"/"<<c<<"="<<a+b/c<<endl;

}

catch(YC){

cout<<"除数不可以为0 "<<endl;

}

return 0;

}

#include<iostream>

using namespace std;

class YC1{};

class YC2{};

int main(){

int a,b;

cin>>a>>b;

try{

if(a*b<10)

throw YC1();

else if(a*b>100)

throw YC2();

cout<<"该矩形的面积为 "<<a*b<<"平方米"<<endl;

}

catch(YC1){

cout<<"面积不可以小于10"<<endl;

}

catch(YC2){

cout<<"面积不可以大于100"<<endl;

}

return 0;

}

多少种情况就抛出多少个异常

文件

#include<iostream>

#include<fstream>

using namespace std;

int main(){

ofstream ofile("11111.txt"); //以文本形式打开文件

if(!ofile)

cerr<<"打开文件错误"<<endl;

else{        //开始写入操作

ofile<<"姓名\t"<<"年龄\t"<<"性别\t"<<endl;

ofile<<"赵易\t"<<"21\t"<<"男\t"<<endl;

ofile<<"杜帅\t"<<"20\t"<<"男\t"<<endl;

ofile<<"赵彤彤\t"<<"20\t"<<"女\t"<<endl;

}

return 0;

}

#include<iostream>

#include<fstream>

using namespace std;

int main(){

ofstream ofile;

ifstream ifile;

char buf1[30],buf2[30];

ofile.open("11111.txt");//打开文件。写入

ofile<<"hello 彤彤";

ofile<<"I Love You";

ofile.close();//关闭文件

ifile.open("11111.txt");  //打开文件,进行读操作

ifile.getline(buf1,30);

ifile.getline(buf2,30);

cout<<buf1<<endl;

cout<<buf2<<endl;

return 0;

}

<<endl,在文件读取过程中,这个会读到文件中去。

时间: 2024-10-10 21:52:47

c++自学笔记第五次的相关文章

Hadoop自学笔记(五)配置分布式Hadoop环境

上一课讲了怎样在一台机器上建立Hadoop环境.我们仅仅配置了一个NHName Node, 这个Name Node里面包括了我们全部Hadoop的东西.包括Name Node, Secondary Name Node, Job Tracker, Task Tracker,这一课解说怎样把上述配置放到不同机器上.从而构建一个分布式的hadoop配置. 1. hadoop分布式安装概览 a) 2-10个nodes:Name Node, Job Tracker, Secondary Name Node

jQuery自学笔记(五):关于jQuery的遍历

向上遍历 DOM 树 parent()  //返回被选元素的直接父元素,该方法只会向上一级对 DOM 树进行遍历. parents()    //返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (<html>); 也可以使用可选参数来过滤对祖先元素的搜索,如: $("span").parents("ul"); parentsUntil()   // 返回介于两个给定元素之间的所有祖先元素,如:  $("span").paren

python自学笔记(五)python文本操作

一.python自带方法 r:read 读 w:write 写 a:append 尾行追加 先命令行进入python后 >>>d = open('a.txt','w') #在对应路径下打开a.txt文本,如果没有就创建一个,然后赋值给变量d >>>d.write('good\n hi') #写入 >>>d.close()#关闭文件 >>>d = open('a.txt','r') >>>print d.readlin

nrf51822自学笔记(五)蜂鸣器

蜂鸣器的资料网上也有很多--这里就简单记录一下--有有源蜂鸣器和无源蜂鸣器两种 这里我用的是无源蜂鸣器的模块 ,自带了放大电路,否则要自己焊一个-- 这里我设想的是用不同频率的pwm波驱动蜂鸣器发出不同频率的乐音,对于钢琴上的 CDEFGAB. 一共搞了两个程序,第一个没有实现功能 ,第二个实现了. (一)只能输出固定频率可调占空比的pwm波形 nrf_pwm.c #include "nrf_gpiote.h" #include "nrf_gpio.h" #if(U

CSS自学笔记(5):CSS的样式

CSS中拥有各种各样的样式表,而基本的样式有背景,文本,字体,链接,列表,表格,轮廓. 一.CSS-背景 CSS中允许用纯色背景,也允许用图片来创建复杂的个性背景. p {background-color: #000;} 是用纯色作为背景.这时你可以定义其他属性,生成不同效果的背景. CSS中也可以用图片作为背景,这是就需要使用background-image属性了,如果属性值为一个URL值,并且图片文件存在,那么就可以看到用该图片做为背景的网页了 body {background-image:

qml自学笔记------自己写相似于劲舞团的按键小游戏(中)

接上篇<qml自学笔记------自己写类似于劲舞团的按键小游戏(上)> 第三部分DisplayPart.qml 代码的其它部分都是渣,就这里花了点时间,整个小游戏就靠这个文件. 首先,屏幕上要随机的滑过空格或者箭头,每个图片就是一个项目,那么就要动态的创建项目. 动态创建项目方法有三种(我所知道的),第一种是通过JavaScript调用Qt.createComponent(),Qt.createQmlObject()来创建对象,这里要注意的是创建时必须传父对象,由于图形项目没有父对象是无法显

qml自学笔记------自己写类似于劲舞团的按键小游戏(中)

接上篇<qml自学笔记------自己写类似于劲舞团的按键小游戏(上)> 第三部分DisplayPart.qml 代码的其他部分都是渣,就这里花了点时间,整个小游戏就靠这个文件. 首先,屏幕上要随机的滑过空格或者箭头,每一个图片就是一个项目,那么就要动态的创建项目.动态创建项目方法有三种(我所知道的),第一种是通过JavaScript调用Qt.createComponent(),Qt.createQmlObject()来创建对象,这里要注意的是创建时必须传父对象,因为图形项目没有父对象是无法显

Log4j自学笔记

log4j十一个开源的日志记录组件,在工程中用于代替System.out语句.它允许开发人员以任意的精细程度控制哪些日志说明被输出,通过使用外部的配置文件,可以在运行的时候配置它.Log4jPO有三个主要的组件:Loggers(记录器).Appenders(输出源).Layout(布局),可以简单的理解为日志类别,日志要输的地方.输出的格式. Loggers组件在此系统中被分为五个级别:DEBUG<INFO<WARN<ERROR<FATAL.这五个级别是有顺序的.DEBUG Log

孤荷凌寒自学python第五十二天初次尝试使用python读取Firebase数据库中记录

(完整学习过程屏幕记录视频地址在文末) 今天继续研究Firebase数据库,利用google免费提供的这个数据库服务,今天主要尝试使用firebase_admin模块来连接firebase数据库. 获得成功. 一.简单总结下今天对firebase_admin模块对象的学习 (一)要通过firebase_admin模块连接到firebase数据库,那么必须要拥有一个从firebase网站上自己的数据库的[用户和权限]处设置的'连接私钥'等相关信息的一个json文件,并下载到项目文件夹中来. (二)