C++Primer 第一章 开始

news/2024/11/28 5:42:37/

最近好像想的有点多,人也不知道该怎们办了,也不知道该怎么学。跟我们数据库老师还有前端老师交流了一下,感觉受益还是挺深的。需要慢慢整理一下现在状态,尽量有节奏的生活,学习。不急躁,不冒进。现在是大三,有好多比赛,想着要不要参加--因为自己害怕失败所以去逃避。

所以想着在复习一下之前的c++prime。

编写一个简单的c++程序

#include<iostream>
using namespace std;
int main()
{cout<< "Hello word" << endl;return 0;
}

涉及知识点

1. #include:这是C++预处理器指令,用于包含头文件。

2. 头文件iostream:头文件iostream包含了定义C++输入输出流的标准库函数和对象。

3. using namespace std:这是一个命名空间,表示使用std命名空间中的所有函数和变量,std是C++标准库的命名空间。

4. main函数:C++程序从main函数开始执行,int main()表示main函数没有参数,返回一个整型值。

5. cout:cout是C++标准库中的ostream类对象,用于输出显示在屏幕上的文本。

6. "Hello world":这是一串字符串常量,用双引号括起来。

7. <<:这是C++中的输出运算符,用于将文本输出到标准输出流。

8. endl:这是一个C++标准库中的特殊符号,表示换行符。

9. return 0:这是main函数的返回语句,0表示程序正常结束。

很简答

需要注意的只有using namespace std;

std是c++中的标准函数库一种命名空间使用using namespace std可以省略每次都添加std::前缀的麻烦。

cerr 与 clog

在C++中,cerrclog都是标准错误输出流对象,它们可以用于输出错误信息和调试信息。它们的区别在于:

  • cerr对象会立即将文本输出到屏幕,而不管输出缓冲区是否已满。
  • clog对象将文本存储在缓冲区中,并在缓冲区已满、程序结束或用户显式刷新缓冲区时将文本输出。
#include <iostream>
#include <fstream>
using namespace std;int main() {ofstream fout("error.log");  // 将错误信息写入文件streambuf* cerrOldBuf = cerr.rdbuf(fout.rdbuf());  // 将cerr的缓冲区指向fout的缓冲区int x = 0;if (x == 0) {cerr << "Error: x cannot be zero" << endl;  // 使用cerr输出错误信息clog << "DEBUG: x is zero" << endl;  // 使用clog输出调试信息}cerr.rdbuf(cerrOldBuf);  // 将cerr的缓冲区恢复为默认return 0;
}

上述代码中,我们首先创建了一个名为error.log的文件,将错误信息输出到该文件中。然后,通过cerr.rdbuf(fout.rdbuf())语句将cerr对象的缓冲区指向fout对象的缓冲区,这意味着所有通过cerr输出的信息都将写入fout所指向的文件中。然后,我们使用cerr对象输出了一个错误信息,使用clog对象输出了一个调试信息。最后,我们恢复了cerr对象的缓冲区到默认状态。

使用cerrclog可以方便地输出调试信息和错误信息,并且通过重定向缓冲区,还可以将它们输出到文件中进行记录。

我对类的认真很浅薄,只知道定义一个类方法,作为一个函数。实际上在c++中类很重要

在C++中,类是一种自定义的数据类型,用于封装数据和操作。类的定义由成员变量和成员函数组成,它们被称为类的成员。

以下是一个示例的类的定义:

```cpp
class MyClass {
private:int myInt;  // 私有成员变量public:// 构造函数MyClass() {myInt = 0;}// 成员函数void setMyInt(int value) {myInt = value;}int getMyInt() {return myInt;}
};
```

上述代码定义了一个名为`MyClass`的类,其中包含一个私有成员变量`myInt`和两个公有成员函数`setMyInt`和`getMyInt`。

- 私有成员变量:在类定义中使用`private:`关键字声明的成员变量只能在类的内部访问和修改。
- 公有成员函数:在类定义中使用`public:`关键字声明的成员函数可以在类的内部和外部进行调用。

通过创建对象来使用类:

```cpp
int main() {MyClass obj;  // 创建一个MyClass类的对象obj.setMyInt(42);  // 调用公有成员函数设置myInt的值int value = obj.getMyInt();  // 调用公有成员函数获取myInt的值cout << "Value: " << value << endl;return 0;
}
```

上述代码中,在`main`函数中创建了一个`MyClass`类的对象`obj`。通过调用对象的公有成员函数来设置和获取私有成员变量`myInt`的值,并将结果输出到屏幕上。

这只是类的基本概念,C++中的类还包括继承、多态、访问控制等更高级的特性,以及构造函数、析构函数、静态成员等更多的内容。

简单的常见术语

  1. 类(Class):一种用户自定义的数据类型,包含数据成员和成员函数。

  2. 对象(Object):根据类定义创建的实例,具有类定义的属性和行为。

  3. 成员变量(Member Variable):类中定义的变量,用于存储对象的状态。

  4. 成员函数(Member Function):类中定义的函数,用于操作对象的行为。

  5. 构造函数(Constructor):用于初始化对象的特殊成员函数,名称与类名相同。

  6. 析构函数(Destructor):用于在对象销毁时执行特定操作的特殊成员函数,名称以波浪号(~)开头,后跟类名。

  7. 继承(Inheritance):一种面向对象的概念,允许一个类派生出另一个类,继承其属性和方法。

  8. 多态(Polymorphism):通过继承和虚函数实现的一种特性,允许使用父类指针或引用来调用子类的方法。

  9. 抽象类(Abstract Class):包含纯虚函数的类,不能直接实例化,只能作为其他类的基类。

  10. 接口(Interface):仅包含纯虚函数的抽象类,用于定义类的接口规范。

  11. 动态内存管理(Dynamic Memory Management):通过new和delete运算符在堆上分配和释放内存。

  12. 异常处理(Exception Handling):用于处理程序中出现的异常情况,通过try、catch和throw语句实现。

  13. 模板(Template):通用代码模板,用于创建泛型(Generic)类或函数。

  14. STL(Standard Template Library):C++标准库中的一部分,提供了许多通用的数据结构和算法。

  15. 迭代器(Iterator):用于遍历STL容器中元素的对象。

  16. 命名空间(Namespace):用于将全局作用域划分为更小的作用域,避免命名冲突。

  17. 指针(Pointer):存储变量地址的变量,可以用于间接访问和修改内存中的数据。


http://www.ppmy.cn/news/1121429.html

相关文章

消息队列中,如何保证消息的顺序性?

本文选自&#xff1a;advanced-java 作者&#xff1a;yanglbme 问&#xff1a;如何保证消息的顺序性&#xff1f; 面试官心理分析 其实这个也是用 MQ 的时候必问的话题&#xff0c;第一看看你了不了解顺序这个事儿&#xff1f;第二看看你有没有办法保证消息是有顺序的&#xf…

C语言入门Day_24 函数与指针

目录 前言&#xff1a; 1.指针和数组 2.函数和指针 3.易错点 4.思维导图 前言&#xff1a; 我们知道数组是用来存储多个数据的&#xff0c;以及我们可以用指针来指向一个变量。那么我们可以用指针来指向一个数组中的数据么&#xff1f; 指针除了可以像指向一个变量一样指…

重构Transformer神经网络:优化的自注意力机制和前馈神经网络

重构Transformer神经网络:优化的自注意力机制和前馈神经网络 原文代码网络结构推理代码训代码数据处理代码长词表辅助代码原文 标题:重构Transformer神经网络:优化的自注意力机制和前馈神经网络 摘要: 本论文研究了一种改进的Transformer神经网络模型,该模型使用区别于传统…

WPF控件模板2

在控件模板和为其提供支持的代码之间有一个隐含约定。如果使用自定义控件模板替代控件的标准模板&#xff0c;就需要确保新模板能够满足控件的实现代码的所有需要。 在简单控件中&#xff0c;这个过程就比较容易&#xff0c;因为对模板几乎没有&#xff08;或者完全没有&#…

【腾讯云 TDSQL-C Serverless 产品体验】| 实战分享

目录 一. &#x1f981; 产品引入二. &#x1f981; TDSQL-C数据库使用体验——实战案例2.1 实战案例介绍2.2 实操指导1. 购买TDSQL数据库2. [配置选择](https://buy.cloud.tencent.com/cynosdb#/)3. 配置TDSQL-C 集群4. 点击授权并创建5. 记住主机名和端口6. 登录TDSQL7. 链接…

ROS-读取/map话题转化为pgm文件(代码版map_server)

在ROS-Navigation中有map_server的工具可以把2D SLAM的地图保存为pgm格式&#xff0c;但map_server只是工具&#xff0c;没办法很个性化自由的处理&#xff0c;这里介绍下源代码的形式&#xff1a; map_server.cpp #include <ros/ros.h> #include <nav_msgs/Occupan…

上位机通过Modbus转Profinet网关与变频器Modbus通讯案例

上位机与变频器Modbus通讯是通过Modbus转Profinet网关来实现的。这个网关可以理解为一个通信翻译器&#xff0c;负责将上位机通过Modbus协议发送的数据转换为Profinet协议&#xff0c;再通过Profinet网络与变频器进行通信。 上位机通过Modbus转Profinet网关与变频器Modbus通讯…

超自动化的未来

如今&#xff0c;部分企业正尝试从小规模的自动化开始&#xff0c;将超级自动化用于营销分析和数据库维护等不同任务。企业应该对超自动化进行更深入的挖掘&#xff0c;如果人们能够更加仔细的观察总结企业的每个流程&#xff0c;那么就能发现更多可以从自动化技术中受益的领域…