只为小站
首页
域名查询
文件下载
登录
帮助
新手学习
latex 附带联系 操作手册
latex 入门 论文写作
2022-06-04 14:07:39
72.83MB
学习
综合资源
1
新手学习
C++入门资料
主体:(一)
一、C++概述 (一) 发展历史 1980年,Bjarne Stroustrup博士开始着手创建一种模拟语言,能够具有面向对象的程序设计特色。在当时,面向对象编程还是一个比较新的理念,Stroustrup博士并不是从头开始设计新语言,而是在C语言的基础上进行创建。这就是C++语言。 1985年,C++开始在外面慢慢流行。经过多年的发展,C++已经有了多个版本。为次,ANSI和ISO的联合委员会于1989年着手为C++制定标准。1994年2月,该委员会出版了第一份非正式草案,1998年正式推出了C++的国际标准。 (二) C和C++ C++是C的超集,也可以说C是C++的子集,因为C先出现。按常理说,C++编译器能够编译任何C程序,但是C和C++还是有一些小差别。 例如C++增加了C不具有的关键字。这些关键字能作为函数和变量的标识符在C程序中使用,尽管C++包含了所有的C,但显然没有任何C++编译器能编译这样的C程序。 C程序员可以省略函数原型,而C++不可以,一个不带参数的C函数原型必须把void写出来。而C++可以使用空参数列表。 C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。 标准C++中的字符串类取代了C标准C函数库
头文件中的字符数组处理函数。 C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。 C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。 二、关键字和变量 C++相对与C增加了一些关键字,如下: typename bool dynamic_cast mutable namespace static_cast using catch explicit new virtual operator false private template volatile const protected this wchar_t const_cast public throw friend true reinterpret_cast try bitor xor_e and_eq compl or_eq not_eq bitand 在C++中还增加了bool型变量和wchar_t型变量: 布尔型变量是有两种逻辑状态的变量,它包含两个值:真和假。如果在表达式中使用了布尔型变量,那么将根据变量值的真假而赋予整型值1或0。要把一个整型变量转换成布尔型变量,如果整型值为0,则其布尔型值为假;反之如果整型值为非0,则其布尔型值为真。布儿型变量在运行时通常用做标志,比如进行逻辑测试以改变程序流程。 #include iostream.h int main() { bool flag; flag=true; if(flag) cout<
>a; /*输入一个数值*/ cout<
>a; cout<
>a; for(int i=1;i<=10;i++) //C语言中,不允许在这里定义变量 { static int a=0; //C语言中,同一函数块,不允许有同名变量 a+=i; cout<<::a<< <
>size; int *array=new int[size]; for(int i=0;i
等运算符 #include iostream.h void func1(s p); void func2(s& p); struct s { int n; char text[10]; }; int main() { static s str={123,China}; func1(str); func2(str); return 0; } void func1(s p) { cout<
>dt; if(dt>0 && dt<4) { const Date& bd=getdate(dt); cout<
tm_mday; mo=tim->tm_mon+1; yr=tim->tm_year; if(yr>=100) yr-=100; } int main() { time_t now=time(0); Date dt(now); dt.display(); return 0; } 本程序先调用time()函数来获取当前时间,并把它赋给time_t对象;然后程序通过调用Date类的转换构造函数来创建一个Date对象,该对象由time_t对象转换而来。time_t对象先传递给localtime()函数,然后返回一个指向tm结构(time.h文件中声明)的指针,然后构造函数把结构中的日月年的数值拷贝给Date对象的数据成员,这就完成了从time_t对象到Date对象的转换。 二、成员转换函数 成员转换函数把该类的对象转换为其他数据类型的对象。在成员转换函数的声明中要用到关键字operator。这样声明一个成员转换函数: operator aaa(); 在这个例子中,aaa就是要转换成的数据类型的说明符。这里的类型说明符可以是任何合法的C++类型,包括其他的类。如下来定义成员转换函数; Classname::operator aaa() 类名标识符是声明了该函数的类的类型说明符。上面定义的Date类并不能把该类的对象转换回time_t型变量,但可以把它转换成一个长整型值,计算从2000年1月1日到现在的天数。 #include iostream.h class Date { int mo,da,yr; public: Date(int m,int d,int y) {mo=m; da=d; yr=y;} operator int(); //声明 }; Date::operator int() //定义 { static int dys[]={31,28,31,30,31,30,31,31,30,31,30,31}; int days=yr-2000; days*=365; days+=(yr-2000)/4; for(int i=0;i
dys[mo]) da-=dys[mo]; else break; mo++; } Date::operator CustomDate() { CustomDate cd(0,yr); for(int i=0;i
dys[mo]) da-=dys[mo]; else break; mo++; } int main() { Date dt(CustomDate(123, 89)); dt.display(); return 0; } 6.匿名对象 上面main()函数中Date对象调用CustomDate类的构造函数创建了一个匿名CustomDate对象,然后用该对象创建了一个Date对象。这种用法在C++中是经常出现的。 7.非类成员的友元函数 有时候友元函数未必是某个类的成员。这样的函数拥有类对象私有数据成员的读写权,但它并不是任何类的成员函数。这个特性在重载运算符时特别有用。 非类成员的友元函数通常被用来做为类之间的纽带。一个函数如果被两个类同时声明为友元,它就可以访问这两个类的私有成员。下面的程序说明了一个可以访问两个类私有数据成员的友元函数是如何将在两个类之间架起桥梁的。 #include iostream.h class Time; class Date { int mo,da,yr; public: Date(int m,int d,int y) { mo=m; da=d; yr=y;} friend void display(const Date&, const Time&); }; class Time { int hr,min,sec; public: Time(int h,int m,int s) { hr=h; min=m; sec=s;} friend void display(const Date&, const Time&); }; void display(const Date& dt, const Time& tm) { cout << dt.mo << '/' << dt.da << '/' << dt.yr; cout << ' '; cout << tm.hr << ':' << tm.min << ':' << tm.sec; } int main() { Date dt(2,16,97); Time tm(10,55,0); display(dt, tm); return 0; } 主体:(五)析构函数和this指针 一、析构函数 前面的一些例子都没有说明析构函数,这是因为所用到的类在结束时不需要做特别的清理工作。下面的程序给出了一新的Date类,其中包括一个字符串指针,用来表示月份。 #include iostream.h #include string.h class Date { int mo,da,yr; char *month; public: Date(int m=0, int d=0, int y=0); ~Date(); void display() const; }; Date::Date(int m,int d,int y) { static char *mos[] = { January,February,March,April,May,June, July,August,September,October,November,December }; mo=m; da=d; yr=y; if(m!=0) { month=new char[strlen(mos[m-1])+1]; strcpy(month, mos[m-1]); } else month = 0; } Date::~Date() { delete [] month; } void Date::display() const { if(month!=0) cout<
> name; if (strncmp(name, end, 3) == 0) break; ListEntry* list = new ListEntry(name); if (prev != 0) prev->AddEntry(*list); prev = list; } while (prev != 0) { prev->display(); ListEntry* hold = prev; prev = prev->PrevEntry(); delete hold; } return 0; } 程序运行时,会提示输入一串姓名,当输入完毕后,键入end,然后程序会逆序显示刚才输入的所有姓名。 程序中ListEntry类含有一个字符串和一个指向前一个表项的指针。构造函数从对中获取内存分配给字符串,并把字符串的内容拷贝到内存,然后置链接指针为NULL。析构函数将释放字符串所占用的内存。 成员函数PrevEntry()返回指向链表前一个表项的指针。另一个成员函数显示当前的表项内容。 成员函数AddEntry(),它把this指针拷贝给参数的preventry指针,即把当前表项的地址赋值给下一个表项的链接指针,从而构造了一个链表。它并没有改变调用它的listEntry对象的内容,只是把该对象的地址赋给函数的参数所引用的那个ListEntry对象的preventry指针,尽管该函数不会修改对象的数据,但它并不是常量型。这是因为,它拷贝对象的地址this指针的内容给一个非长常量对象,而编译器回认为这个非常量对象就有可能通过拷贝得到的地址去修改当前对象的数据,因此AddEntry()函数在声明时不需要用const。 主体:(六)类对象数组和静态成员 一、类对象数组 类的对象和C++其他数据类型一样,也可以为其建立数组,数组的表示方法和结构一样。 #include iostream.h class Date { int mo,da,yr; public: Date(int m=0,int d=0, int y=0) { mo=m; da=d; yr=y;} void display() const { cout<
class Date { int mo, da, yr; public: Date(); Date(int m,int d,int y) { mo=m; da=d; yr=y;} void display() const { cout <
nextentry=this; lastentry=this; listvalue=new char[strlen(s)+1]; strcpy(listvalue,s); nextentry=0; } int main() { while (1) { cout<<\nEnter a name ('end' when done): ; char name[25]; cin>>name
2022-05-10 22:00:25
83KB
C++
1
新手学习
前端之js模仿淘宝主页网站
淘宝网大家在熟悉不过了,那么淘宝网首页模板是怎么做的呢?今天小编抽时间给大家分享
新手学习
前端之js模仿淘宝主页网站的相关资料,需要的朋友可以参考下
2022-04-28 22:35:33
182KB
js
淘宝主页
1
win32版贪吃蛇源码,值得
新手学习
,框架清晰,方便添加功能
win32版贪吃蛇源码C++,值得
新手学习
,框架清晰,方便添加功能,可以帮助熟练掌握stl关于容器的使用,以及对学习win32的铁子帮助很大,可以添加很多新功能,值得
新手学习
,如有发现bug,欢迎指正交流,一起进步
2022-04-17 21:11:59
10.9MB
win32
贪吃蛇
源码;
1
电影周周看(微信小程序源代码).7z
一个极其适合
新手学习
的微信小程序——电影周周看。在这里你可以学习到小程序开发的基本流程和基本方法,麻雀虽小,五脏俱全。
2022-03-11 17:23:57
1.02MB
新手学习
微信小程序
项目代码
1
vc++中文版适合
新手学习
c使用
适用人群:学习c的初学者
2022-02-12 14:02:42
7.63MB
c语言
编程语言
1
黑金FPGASparten6开发板Microblaze和Verilog集合,适合
新手学习
,参考
黑金FPGASparten6开发板Microblaze和Verilog集合,适合
新手学习
,参考
2022-02-10 12:04:04
28.9MB
黑金Sparten6
Microblaze
Verilog
FPGA
1
三菱FX3u 编写的2轴经典控制程序,含定位FB块 (回原点及绝对定位功能)非常适合
新手学习
。
三菱FX3u 编写的2轴经典控制程序,含定位FB块 (回原点及绝对定位功能)非常适合
新手学习
。
2022-01-26 19:02:13
487KB
PLC伺服控制
1
PHP 代码采集案例!适合
新手学习
PHP 代码采集案例
2022-01-21 15:44:33
2KB
PHP
代码采集案例
1
抽奖jsp系统,
新手学习
抽奖jsp.zip
2022-01-20 14:03:02
287KB
java
jsp
个人信息
点我去登录
购买积分
下载历史
恢复订单
热门下载
故障诊断数据集及实现代码
2021华为芯片研发岗位笔试题
OLED显示温度和时间-STM32F103C8T6(完整程序工程+原理图+相关资料).zip
STM32F4时钟触发ADC双通道采样DMA传输进行FFT+测频率+采样频率可变+显示波形
SSM外文文献和翻译(毕设论文精品).doc
2020年数学建模国赛C题论文
基于LSTM模型的股票预测模型_python
基于MQ2烟雾传感器的STM32F103程序
2020年大学生数学建模竞赛C题省一论文(包括材料和代码)
刚萨雷斯《数字图像处理》第四版答案.pdf
scratch版 我的世界.sb2
狂神说全部笔记内容.zip
matlab机器人工具箱实现机械臂直线轨迹&圆弧轨迹规划
基于hadoop商品推荐系统课程设计
python实现的学生信息管理系统—GUI界面版
最新下载
华为 CD32 键盘指纹驱动
海康威视(Hikvision)出入口管理系统软件 PMS V4.0.0
PHP版微信支付服务商平台Api v3特约商户进件
CNN卷积神经网络图像还原代码
NGSIM数据集合---城区Peachtree-Street-Atlanta-GA路段数据
三相SPWM逆变电路simulink仿真.zip
基于TI TPS65988 双端口 USB Type-C移动电源电路方案设计(原理图+pcb+阐述)-电路方案
Tina Pro v10.0中文版
tina pro v10
python操作Excel第三方包xlwings的操作手册
其他资源
java-8-openjdk-amd64
传递矩阵-转子振型图-固有频率附结果
815信号与系统 信号与线性系统 第2版 [王霞,侯兴松,阎鸿森 编著] 2014年版
北斗伪距单点定位程序
广工计算机网络课程设计(p2p程序)
vbs模拟键盘鼠标实现谷歌浏览器打开某网站并登陆
元胞自动机实现交通流模拟
开关电源的原理与设计(修订版)-张占松
ARM&Thumb; opcode
学生成绩管理ssm
2009-2019软件设计师历年真题及答案以及备考心得.rar
基于Javaee的网上课程设计选课系统
C语言经典编程实例100题+答案,
一个故事告诉你比特币的原理及运作机制
Python3.7版本dlib安装.docx
【EDIUS模板】婚庆婚礼、电子相册模板.txt
mqtt:Tarantool MQTT客户端-源码
在C#中调用 java的函数(C#与java结合使用)的ikvm相关包
操作系统实现作业调度实验MFC源程序
IntelliJ_idea_keymaps_eclipse_copy快捷键_重新整理
Effective C++中文版第三版 高清PDF
实用射频技术(胡树豪)
vb学生成绩管理系统
onvif设备发现+鉴权认证+RTSP地址获取VS2010编译
JavaEE struts2综合小案例