![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++教程
张威计
这个作者很懒,什么都没留下…
展开
-
C++ 类的静态成员
我们可以使用static关键字来把类成员定义为静态的。当我们声明类的成员为静态时,论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符::来重新声明静态变量从而对它进行初始化。静态成员在类的外部只要使...转载 2019-03-10 11:07:41 · 83 阅读 · 0 评论 -
C++ 命名空间
您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。...转载 2019-03-10 23:08:47 · 102 阅读 · 0 评论 -
C++ 动态内存
栈:在函数内部声明的所有变量都将占用栈内存。 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。new 的功能是在堆区新建一个对象,并返回该对象的指针。所谓的【新建对象】的意思就是,将调用该类的构造函数,因为如果不构造的话,就不能称之为一个对象。而 malloc 只是机械的分配一块内存,如果用 mallco 在堆区创建一个对象的话,是不会调用构造函数的。同样的,用 del...转载 2019-03-10 22:40:40 · 82 阅读 · 0 评论 -
C++ 接口(抽象类)
如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:class Box{ public: // 纯虚函数 virtual double getVolume() = 0; private: double length; // 长度 double bread...转载 2019-03-10 21:07:11 · 143 阅读 · 0 评论 -
C++ 多态
C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。#include <iostream> using namespace std; class Shape { protected: int width, height; public: Shape( int a=0, int b=0) { ...转载 2019-03-10 20:08:36 · 72 阅读 · 0 评论 -
C++ 重载运算符
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。如果我们定义的函数为类的成员函数:Box operator+(const Box&);如果我们定义的函数为非成员函数,那么我们需要为每次操作传递两个参数:Box operator+(const Box&, const ...转载 2019-03-10 16:12:40 · 84 阅读 · 0 评论 -
C++ 继承
继承形式:class derived-class: access-specifier base-class其中,访问修饰符 access-specifier 是public、protected或private其中的一个,base-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier,则默认为 private。个派生类继承了所有的基类方...转载 2019-03-10 13:38:01 · 90 阅读 · 0 评论 -
C++ 引用
引用变量是一个别名,一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来访问变量。引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。 引用必须在创建时被初始化。指针可以在任何时间被初始化。C++按引用传参时,形参是引用变量,实参是一个变量,调用...转载 2019-03-10 11:39:36 · 91 阅读 · 0 评论 -
C++ 友元函数
友元函数的原型有声明在类中,友元函数是定义在类外部,友元函数并不是类的成员函数,但是有权访问类的所有私有(private)成员和保护(protected)成员。因为友元函数没有this指针,则参数要有三种情况:1.要访问非static成员时,需要对象做参数;2.要访问static成员或全局变量时,则不需要对象做参数;3.如果做参数的对象是全局对象,则不需要对象做参数.#in...转载 2019-03-09 21:59:34 · 460 阅读 · 0 评论 -
C++ 拷贝构造函数
拷贝构造函数是一种特殊的构造函数,具有单个形参。必须定义拷贝构造函数的情况:1.如果类带有指针变量,或者有动态内存分配,则必须定义一个拷贝构造函数。2.只包含类类型成员或内置类型(但不是指针类型)成员的类,无须显式地定义拷贝构造函数也可以拷贝;如果在类中没有定义拷贝构造函数,编译器会自行定义一个。什么情况使用拷贝构造函数:类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会...转载 2019-03-09 22:29:29 · 164 阅读 · 0 评论 -
C++ 内联函数
如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字inline,当函数被声明为内联函数之后,不是按通常的函数调用机制进行调用,程序在编译器编译的时候,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体进行替换。在类定义中的定义的函数都是内联函数优点: 当函数体比较小的时候, 内联该函数可以令目标代码更加高效. 对于存取函数以及其它函数体比较短, 性能关键的函数, 鼓励使用内...转载 2019-03-09 23:11:42 · 84 阅读 · 0 评论 -
C++ this 指针
this指针是所有成员函数的隐含参数,当我们调用一个成员函数时,用请求该函数的对象地址初始化 this。因为 this 的目的总是指向“这个”对象,所以 this 是一个常量指针,我们不允许改变 this 中保存的地址。友元函数没有this指针,因为友元不是类的成员。只有成员函数才有this指针。#include <iostream> using namespace...转载 2019-03-10 09:50:01 · 93 阅读 · 0 评论 -
C++ 模板
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。函数模板template <typename T> inline T const& Max (T const& a, T const& b) { return ...转载 2019-03-10 23:45:42 · 66 阅读 · 0 评论