最近好像想的有点多,人也不知道该怎们办了,也不知道该怎么学。跟我们数据库老师还有前端老师交流了一下,感觉受益还是挺深的。需要慢慢整理一下现在状态,尽量有节奏的生活,学习。不急躁,不冒进。现在是大三,有好多比赛,想着要不要参加--因为自己害怕失败所以去逃避。
所以想着在复习一下之前的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++中,cerr
和clog
都是标准错误输出流对象,它们可以用于输出错误信息和调试信息。它们的区别在于:
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
对象的缓冲区到默认状态。
使用cerr
和clog
可以方便地输出调试信息和错误信息,并且通过重定向缓冲区,还可以将它们输出到文件中进行记录。
类
我对类的认真很浅薄,只知道定义一个类方法,作为一个函数。实际上在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++中的类还包括继承、多态、访问控制等更高级的特性,以及构造函数、析构函数、静态成员等更多的内容。
简单的常见术语
-
类(Class):一种用户自定义的数据类型,包含数据成员和成员函数。
-
对象(Object):根据类定义创建的实例,具有类定义的属性和行为。
-
成员变量(Member Variable):类中定义的变量,用于存储对象的状态。
-
成员函数(Member Function):类中定义的函数,用于操作对象的行为。
-
构造函数(Constructor):用于初始化对象的特殊成员函数,名称与类名相同。
-
析构函数(Destructor):用于在对象销毁时执行特定操作的特殊成员函数,名称以波浪号(~)开头,后跟类名。
-
继承(Inheritance):一种面向对象的概念,允许一个类派生出另一个类,继承其属性和方法。
-
多态(Polymorphism):通过继承和虚函数实现的一种特性,允许使用父类指针或引用来调用子类的方法。
-
抽象类(Abstract Class):包含纯虚函数的类,不能直接实例化,只能作为其他类的基类。
-
接口(Interface):仅包含纯虚函数的抽象类,用于定义类的接口规范。
-
动态内存管理(Dynamic Memory Management):通过new和delete运算符在堆上分配和释放内存。
-
异常处理(Exception Handling):用于处理程序中出现的异常情况,通过try、catch和throw语句实现。
-
模板(Template):通用代码模板,用于创建泛型(Generic)类或函数。
-
STL(Standard Template Library):C++标准库中的一部分,提供了许多通用的数据结构和算法。
-
迭代器(Iterator):用于遍历STL容器中元素的对象。
-
命名空间(Namespace):用于将全局作用域划分为更小的作用域,避免命名冲突。
-
指针(Pointer):存储变量地址的变量,可以用于间接访问和修改内存中的数据。