• C++Primer 第一章 开始


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

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

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

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. cout<< "Hello word" << endl;
    6. return 0;
    7. }

    涉及知识点

    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对象将文本存储在缓冲区中,并在缓冲区已满、程序结束或用户显式刷新缓冲区时将文本输出。
    1. #include
    2. #include
    3. using namespace std;
    4. int main() {
    5. ofstream fout("error.log"); // 将错误信息写入文件
    6. streambuf* cerrOldBuf = cerr.rdbuf(fout.rdbuf()); // 将cerr的缓冲区指向fout的缓冲区
    7. int x = 0;
    8. if (x == 0) {
    9. cerr << "Error: x cannot be zero" << endl; // 使用cerr输出错误信息
    10. clog << "DEBUG: x is zero" << endl; // 使用clog输出调试信息
    11. }
    12. cerr.rdbuf(cerrOldBuf); // 将cerr的缓冲区恢复为默认
    13. return 0;
    14. }

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

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

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

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

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

    1. ```cpp
    2. class MyClass {
    3. private:
    4.     int myInt;  // 私有成员变量
    5. public:
    6.     // 构造函数
    7.     MyClass() {
    8.         myInt = 0;
    9.     }
    10.     // 成员函数
    11.     void setMyInt(int value) {
    12.         myInt = value;
    13.     }
    14.     int getMyInt() {
    15.         return myInt;
    16.     }
    17. };
    18. ```

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

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

    通过创建对象来使用类:

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

    上述代码中,在`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):存储变量地址的变量,可以用于间接访问和修改内存中的数据。

  • 相关阅读:
    java 调用 360 接口实现批量查询手机号码归属地
    Go语言在机器学习中有未来吗?
    c++异常
    Java+JSP+MySQL基于SSM的扶贫信息管理系统-计算机毕业设计
    使用 Helm 管理应用的一些 Tips
    Keras深度学习入门篇
    05-vue全局私有组件,组件的切换,组件的简单动画,父子组件之间方法和值的传递
    Spring源码------IOC容器初始化过程
    Mysql数据库 10.SQL语言 储存过程 上
    MMQA5V6T1G 瞬态电压抑制器 TVS二极管的特性及应用
  • 原文地址:https://blog.csdn.net/qq_64200765/article/details/133149253