01 2021 档案

摘要:c++条件编译详解 本篇文章专注于解答在《c预处理器》一文中提出的问题,并进一步提升对c条件编译的认识。 通常,源文件中所有内容都要参加编译,但是在某些时候,可能希望源文件中某些部分在满足某些条件的情况下才进行编译,这就是所谓的条件编译。 有趣的是,对于c++的初学者来说,没有条件编译照样可以写出可 阅读全文
posted @ 2021-01-23 22:32 未徙 阅读(1882) 评论(0) 推荐(0)
摘要:C++ 预处理器 预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是以井号#开头,只有空格字符可以出现在预处理指令之前。预处理指令不是 C++ 语句,所以它们不会以分号;结尾。 我们已经看到,之前所有的实例中都有 #include 指令。这个宏用于把头文件包含到源 阅读全文
posted @ 2021-01-23 22:31 未徙 阅读(111) 评论(0) 推荐(0)
摘要:C++ 模板 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。 每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector <int> 阅读全文
posted @ 2021-01-23 22:30 未徙 阅读(95) 评论(0) 推荐(0)
摘要:C++ 命名空间 首先让我们假设这样一种情况,当一个学校里有两个名叫 Ken 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们所在的不同班级。 同样的情况也出现在 C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函 阅读全文
posted @ 2021-01-23 22:29 未徙 阅读(103) 评论(0) 推荐(0)
摘要:C++ 动态内存 了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的。C++ 程序中的内存分为两个部分: 1、栈:在函数内部声明的所有变量都将占用栈内存。 2、堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。 很多时候,您无法提前预知需要多少内存来存储某个定 阅读全文
posted @ 2021-01-23 22:28 未徙 阅读(153) 评论(0) 推荐(0)
摘要:C++ 异常处理 异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。 异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。 1、throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 阅读全文
posted @ 2021-01-22 11:34 未徙 阅读(136) 评论(0) 推荐(0)
摘要:C++ 文件和流详解 到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。 本教程介绍如何从文件读取流和向文件写入流。这就需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型: 1、ofstrea 阅读全文
posted @ 2021-01-22 11:33 未徙 阅读(399) 评论(0) 推荐(0)
摘要:C++ 数据封装 所有的 C++ 程序都有以下两个基本要素: 1、程序语句(代码):这是程序中执行动作的部分,它们被称为函数。 2、程序数据:数据是程序的信息,会受到程序函数的影响。 封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数 阅读全文
posted @ 2021-01-21 20:11 未徙 阅读(172) 评论(0) 推荐(0)
摘要:C++ 接口(抽象类) 接口描述了类的行为和功能,而不需要完成类的特定实现。 C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。 纯虚函数是通过在声明中使用 "= 0" 来指定的 阅读全文
posted @ 2021-01-21 20:10 未徙 阅读(94) 评论(0) 推荐(0)
摘要:c++数据抽象 数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。 数据抽象是一种依赖于接口和实现分离的编程(设计)技术。 让我们举一个现实生活中的真实例子,比如一台电视机,您可以打开和关闭、切换频道、调整音量、添加外部组件(如喇叭、录像机、DVD 播放器) 阅读全文
posted @ 2021-01-21 19:58 未徙 阅读(39) 评论(0) 推荐(0)
摘要:c++多态 多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。 下面的实例中,基类 Shape 被派生为两个类,如下所示: #include <iostream> using 阅读全文
posted @ 2021-01-21 17:06 未徙 阅读(90) 评论(0) 推荐(0)
摘要:C++ 常量指针或者常量引用作为函数参数传递的原因 当传递较大的数据结构作为参数时,用引用或者指针作为函数参数可以节省 一个复制的过程,提高效率。 看别人代码经常这样使用。想想为啥 void Fun1(const classA&); void Fun2(const classA*); 如果Class 阅读全文
posted @ 2021-01-21 16:07 未徙 阅读(502) 评论(0) 推荐(0)
摘要:c++继承 先放语法: class 派生类名:继承方式1 基类名1,继承方式2 基类名2,… { 派生类类体 }; 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。 当创建一个类 阅读全文
posted @ 2021-01-21 10:40 未徙 阅读(139) 评论(0) 推荐(0)
摘要:当c++爱上对象 “自顶向下,逐步求精”的面向过程程序设计 旧的面向过程思想在解决问题时总是按照这样的流程:先提出问题;然后分析问题的处理流程;接着根据流程需要把一个大问题划分为几个小问题;如果细分后的小问题仍然比较复杂,则进一步细分,直到小问题可以简单解决为止;实现每个子模块,解决每个小问题;最后 阅读全文
posted @ 2021-01-21 10:39 未徙 阅读(84) 评论(0) 推荐(0)
摘要:c++拷贝(复制)构造函数 先放语法: class Line{ public: Line(const Line& obj); private: int* ptr; }; Line::Line(const Line& obj) { //实现深度拷贝的拷贝代码 ptr=new int; *ptr=*ob 阅读全文
posted @ 2021-01-21 09:05 未徙 阅读(331) 评论(0) 推荐(0)
摘要:c++从浅拷贝和深拷贝到默认拷贝函数 1. 深度拷贝和浅拷贝 深度拷贝和浅拷贝在c语言中就经常遇到的了,在这里我简单描述。 一般的赋值操作是深度拷贝: //深度拷贝 int a = 5; int b = a; 所谓深度拷贝,即为在堆栈内存中新开辟了一块区域,存储着拷贝过来的数据。以上述代码为例,a和 阅读全文
posted @ 2021-01-21 09:00 未徙 阅读(231) 评论(0) 推荐(0)
摘要:c++类与对象是什么意思? C++ 中的类(Class)可以看做C语言中结构体(Struct)的升级版。 结构体 结构体是一种构造类型,可以包含若干成员变量,每个成员变量的类型可以不同;可以通过结构体来定义结构体变量,每个变量拥有相同的性质。例如: #include <stdio.h> //定义结构 阅读全文
posted @ 2021-01-21 07:52 未徙 阅读(336) 评论(0) 推荐(0)
摘要:c++类的定义与对象的创建 类的定义与访问 类是用户自定义的类型,如果程序中要用到类,必须提前说明,或者使用已存在的类(别人写好的类、标准库中的类如vector、string等),C++语法本身并不提供现成的类的名称、结构和内容。 //一个简单的类的定义和访问 #include <iostream> 阅读全文
posted @ 2021-01-21 07:50 未徙 阅读(218) 评论(0) 推荐(0)
摘要:c++类的成员变量与成员函数 成员变量与成员函数 类可以看做是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包含成员变量和成员函数的集合。 类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存。但是,在定义类的时候不能对成员变量赋值,因为类只是一 阅读全文
posted @ 2021-01-21 07:49 未徙 阅读(258) 评论(0) 推荐(0)
摘要:c++内联函数 先放语法: inline int max(int a,int b) { return a > b ? a : b ; } //先声明后定义 void Foo(int x, int y); inline void Foo(int x, int y) {} // inline 与函数定义 阅读全文
posted @ 2021-01-21 07:48 未徙 阅读(89) 评论(0) 推荐(0)
摘要:C++类成员的访问权限以及类的封装 访问权限 c++中提供了三种成员访问限定符: public:公有 private:私有 protected:受保护 Java、C# 程序员注意,C++ 中的 public、private、protected 只能修饰类的成员,不能修饰类,C++中的类没有共有私有之 阅读全文
posted @ 2021-01-21 07:46 未徙 阅读(417) 评论(0) 推荐(0)
摘要:C++构造函数详解 先放语法: class obj{ private: int m_data1; int m_data2; char* m_name; public: obj(int data1,int data2,char* name); }; //构造函数,析构函数,拷贝构造函数都应该声明为pu 阅读全文
posted @ 2021-01-21 07:45 未徙 阅读(486) 评论(0) 推荐(0)
摘要:c++析构函数 先放语法: class VLA{ public: VLA(char* arr); //构造函数 ~VLA(); //析构函数 public: void input(); //从控制台输入数组元素 void show(); //显示数组元素 private: char *m_arr; 阅读全文
posted @ 2021-01-21 07:44 未徙 阅读(232) 评论(0) 推荐(0)
摘要:C++ this指针详解 先放语法: class Student{ public: void setname(char *name); void setage(int age); void setscore(float score); private: char *name; int age; fl 阅读全文
posted @ 2021-01-21 07:42 未徙 阅读(225) 评论(0) 推荐(0)
摘要:C++ static静态成员变量详解 先放语法: class Student{ public: static int m_total;//静态成员变量 }; 对象的内存中包含了成员变量,不同的对象占用不同的内存(已在《C++对象的内存模型》中提到),这使得不同对象的成员变量相互独立,它们的值不受其他 阅读全文
posted @ 2021-01-21 07:40 未徙 阅读(308) 评论(0) 推荐(0)
摘要:C++ static静态成员函数详解 先放语法: class Student{ public: static int m_total; public: static int get_m_total(); }; int Student::get_m_total() { return m_total; 阅读全文
posted @ 2021-01-21 07:38 未徙 阅读(1109) 评论(0) 推荐(0)
摘要:C++ const成员变量和成员函数(常成员函数) 在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。 const成员变量 const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 c 阅读全文
posted @ 2021-01-21 07:37 未徙 阅读(263) 评论(0) 推荐(0)
摘要:C++ const对象(常对象) 在 C++ 中,const 也可以用来修饰对象,称为常对象。一旦将对象定义为常对象之后,就只能调用类的 const 成员(包括 const 成员变量和 const 成员函数)了。 定义常对象的语法和定义常量的语法类似: const class object(para 阅读全文
posted @ 2021-01-21 07:36 未徙 阅读(164) 评论(0) 推荐(0)
摘要:C友元函数和友元类(C friend关键字) 先放语法: //非成员函数声明为友元函数 class Student{ public: friend void show(Student *pstu); private: int data; }; void show(Student *pstu) { c 阅读全文
posted @ 2021-01-21 07:35 未徙 阅读(239) 评论(0) 推荐(0)
摘要:c++中函数参数的传递方式 所谓c++中的参数传递,是指用实参来给形参赋初始值的过程。 在C++中调用函数时,按形参种类划分了四种参数传递方式: (1)值传递; (2)址传递(指针传递); (3)引用传递; (4) 全局变量传递; 一、值传递 值传递(passl-by-value)过程中,被调函数的 阅读全文
posted @ 2021-01-21 07:34 未徙 阅读(834) 评论(0) 推荐(0)