C++(学习)2024.9.18

打印 上一主题 下一主题

主题 545|帖子 545|积分 1635

目次
C++根本介绍
C++特点
面向对象的三大特性
面向对象与面向过程的区别
C++拓展的非面向对象的功能
引用
引用的性子
引用的参数
指针和引用的区别
赋值
键盘输入
string字符串类
遍历方式
字符串与数字转换
函数
内联函数
函数重载overload
哑元函数


C++根本介绍

C++特点

   在支持C语言的根本上,全面支持面向对象编程,编程领域广泛,功能强大,是为数不多的支持底层操纵的面向对象编程语言,在面向对象的语言中执行效率极高。
  面向对象的三大特性

封装        继承        多态
面向对象与面向过程的区别

           面向过程是以"怎么办理问题"为核心,这种头脑关注的重点是“过程”,“过程”指的是一系列有序的步调,只必要按照这个步调来做,就能够得到预料的结果。这种思维方式方向于计算机执行命令的本质,通常步伐为一些有序的语句。如许的步伐特点是执行效率高。得当小体量的软件项目工程,方向性能的项目一般如许做。
          面向对象是以"谁来办理问题"为核心,关注的重点是“对象”。在计算机中,“对象”可以明白为一系列由于某种接洽而聚焦在一起的数据。在编程的过程中处置惩罚对象之间的关系。这种方式更近于人类的思索方式。这种编程方式的缺点就是执行效率低,编程效率高。得当大规模的软件项目。
  
C++拓展的非面向对象的功能

引用

   引用从一定程度上讲是指针的平替。几乎被全部的面向对象编程语言所利用。引用相当于对某一目标变量起“别名”。操纵引用与操纵原变量完全相同。
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     int a = 1;
  6.     int &b = a;    // b是a的引用
  7.     cout << a << " " << &a << endl;
  8.     cout << b << " " << &b << endl;
  9.     return 0;
  10. }
复制代码
引用的性子

   1.可以改变引用的值,但是不能再次成为其他变量的引用。
  2.声明引用时,必须要初始化
  3.声明引用时,根本写法不能初始化为null
  4.声明引用的时间,初始化的值如果是纯数值,必要利用const关键字修饰引用,表示该引用为常量引用,如许引用的值不可改变。
  5.可以将变量引用的地址赋值给一个指针,此时指针指向的还是原来的变量。
6.可以利用const修饰引用,此时如果原变量的值改变,引用的值也改变。
  引用的参数

写一个函数,函数有两个参数a和b,函数的功能是交换两个传入的参数原来变量的值。
  1.     
  2. #include <iostream>
  3. using namespace std;
  4. void test2(int &a,int &b)
  5. {
  6.     a = a ^ b;
  7.     b = a ^ b;
  8.     a = a ^ b;
  9. }
  10. int main()
  11. {
  12.     int a1 = 1;
  13.     int b1 = 2;
  14.     test2(a1,b1);
  15.     cout << "a1=" << a1 << endl;
  16.     cout << "b1=" << b1 << endl;
  17.     return 0;
  18. }
复制代码
  引用作为参数进行定义的时间,再参数通报时,是不会产生副本的,如许会提高运行效率,我们在正常的编程中,建议利用引用进行通报参数。引用形参,在不参数计算的环境下,我们建议利用const进行修饰。以到达引用的安全性。
  指针和引用的区别

   1.语法:
指针利用 * 来声明,比方 int* ptr。
引用利用 & 来声明,比方 int& ref。
  2.初始化:
指针可以在任何时刻被重新赋值,可以指向不同的对象。
引用在初始化时必须绑定到一个对象,且不能更改为指向其他对象。
  3.内存管理:
指针占用内存(存储地址),可以为 nullptr。
引用没有自己的内存地址,始终与某个对象关联。
  4.解引用:
指针必要利用 * 来解引用,比方 *ptr。
引用可以直接利用,无需解引用操纵。
  5.适用场景:
指针适用于必要动态内存管理或数组操纵的场景。
引用更得当必要通报对象而不想复制时的场景。
  赋值

通常编程中利用=进行赋值操纵,C++新增了以下赋值语法。(只能用于初始化)
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     double b = 3.14;
  6.     int b1 = b;
  7.     int b2(b);
  8.     int b3{b};  // 升级:对数据窄化做出警告
  9.     cout << b << endl;  
  10.     cout << b1 << endl;
  11.     cout << b2 << endl;
  12.     cout << b3 << endl;
  13.     return 0;
  14. }
复制代码
键盘输入

可以利用cin把用户在命令行中输入的内容赋值到变量中。cin与cout一样,都是属于头文件iostream中的标准输入输出流。
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     int b;
  6.     cin>>b;
  7.     getchar();
  8.     string a;
  9.     cout << "请输入一个字符串" << endl;
  10.     getline(cin,a);
  11.     cout << "您输入的内容是:" << endl;
  12.     cout << a << endl;
  13.     return 0;
  14. }
复制代码
string字符串类

           string不是C++的根本数据类型,而是C++标准库中的字符串类,利用时必要引入对应的头文件#include<string>,string在绝大多数环境下可以替换C语言中的字符串,不必担心内存是否充足和字符串长度等等,其中内部还包罗了很多字符串处置惩罚函数,可以完成各种环境下的字符串处置惩罚功能。string和C语言相同,字符串编码利用ASCII编码,不支持中文处置惩罚。
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     string str = "helloworld";
  6.     cout << str.size() << endl;
  7.     cout << str.length() << endl;
  8.     cout << str[1] << endl;
  9.     cout << str.at(5) << endl;
  10.     return 0;
  11. }
复制代码
  两种方式都可以,但是在C++中更保举利用at函数,原因是at函数更安全。但是[ ]的方式效率更高。
  遍历方式

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     string str = "helloworld";
  6.    
  7.     for(int i = 0; i < str.size(); i++)    //以for循环的方式进行输出字符串
  8.     {
  9.         cout << str.at(i);
  10.     }
  11.     cout << endl;
  12.  
  13.     for(char i:str)      //for each的方式进行循环遍历字符串
  14.     {
  15.         cout << i;
  16.     }
  17.     return 0;
  18. }
复制代码
字符串与数字转换

  1. #include <iostream>
  2. #include <sstream> // 字符串流
  3. using namespace std;
  4. int main()
  5. {
  6.     string s = "123";
  7. //    int i = s; 错误
  8.     // string → int
  9.     istringstream iss(s);
  10.     int i;
  11.     iss >> i;
  12.     cout << i << endl;
  13.     // int → string
  14. //    string s2 = i; 错误
  15.     stringstream ss;
  16.     ss << i;
  17.     string s2 = ss.str();
  18.     cout << s2 << endl;
  19.     return 0;
  20. }
复制代码
函数

内联函数

   内联函数用于取代C语言中宏定义的函数,内联函数的精确利用可以提升步伐的执行效率。内联函数在编译的时间,直接把函数体睁开到主函数中编译。在运行期间减少调用开销。
通常将具有以下性子的函数定义为内联函数:
●代码长度5行以内
●不包罗复杂的控制语句
●频仍被调用
关键字:inline

后续学习的成员函数默认添加inline修饰。但是手动添加上的inline关键字,将函数声明是否为内联函数不是我们决定的,而是编译器有自己的判断准则,我们只是给编译器提一个建议。详细是否变为内联函数,还是编译器自己决定的。
  函数重载overload

   C++中允很多个函数利用同一个名称,这种用法就是函数重载。函数重载要求函数名称相同,但是参数不同(类型不同大概数量不同,前后顺序不同),与返回值等其他因素无关。
  1. #include <iostream>
  2. using namespace std;
  3. void print_show(int i)
  4. {
  5.     cout << "调用了int重载" << i << endl;
  6. }
  7. void print_show(string str)
  8. {
  9.     cout << "调用了string重载" << str << endl;
  10. }
  11. void print_show(float f)
  12. {
  13.     cout << "调用了float重载" << f << endl;
  14. }
  15. void print_show(double d)
  16. {
  17.     cout << "调用了double重载" << d << endl;
  18. }
  19. int main()
  20. {
  21.     print_show(11);
  22.     return 0;
  23. }
复制代码
哑元函数

   哑元函数的参数只有类型,没著名称,如许的参数的函数哑元函数。
  1. #include <iostream>
  2. using namespace std;
  3. void print_show(int,int)
  4. {
  5.     cout << "调用了int哑元函数1" << endl;
  6. }
  7. void print_show(int)
  8. {
  9.     cout << "调用了int哑元函数2" << endl;
  10. }
  11. int main()
  12. {
  13.     print_show(1,1);
  14.     return 0;
  15. }
复制代码
作用1:哑元函数用来区分函数重载
作用2:运算符重载中用到。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表