C++学习感悟

1.每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。https://www.runoob.com/cplusplus/cpp-pointers.html & 读作引用

2.虚函数类似于抽象方法,是一种多态属性,子类实现可以指向父类的引用。如果子类实现了则用编译器优先调用子类的方法;

3.C++ 引用 vs 指针

引用很容易与指针混淆,它们之间有三个主要的不同:

  • 不存在空引用。引用必须连接到一块合法的内存。

  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。

  • 引用必须在创建时被初始化。指针可以在任何时间被初始化。

    引用类似于java中的引用传递,java默认是引用传递,但c++不是,需要在变量前面加& 表示引用

// 函数定义

void swap(int& x, int& y)

{ int temp; temp = x; /* 保存地址 x 的值 */

x = y; /* 把 y 赋值给 x */

y = temp; /* 把 x 赋值给 y */

return; }

4. endl 用于在行末添加一个换行符。

5.基类 & 派生类

一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名,形式如下:

class derived-class: access-specifier base-class

其中,访问修饰符 access-specifier 是 public、protectedprivate 其中的一个,base-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier,则默认为 private。

c++的一个子类可以有多个父类,这就没有接口的概念了。

多继承即一个子类可以有多个父类,它继承了多个父类的特性。

C++ 类可以从多个类继承成员,语法如下:

class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类类体>
};

其中,访问修饰符继承方式是 public、protectedprivate 其中的一个,用来修饰每个基类,各个基类之间用逗号分隔,

C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。

如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:

class Box { public: // 纯虚函数 virtual double getVolume() = 0; private: double length; // 长度 double breadth; // 宽度 double height; // 高度 };

设计抽象类(通常称为 ABC)的目的,是为了给其他类提供一个可以继承的适当的基类。抽象类不能被用于实例化对象,它只能作为接口使用。如果试图实例化一个抽象类的对象,会导致编译错误。

因此,如果一个 ABC 的子类需要被实例化,则必须实现每个虚函数,这也意味着 C++ 支持使用 ABC 声明接口。如果没有在派生类中重写纯虚函数,就尝试实例化该类的对象,会导致编译错误。

可用于实例化对象的类被称为具体类


上面内容有点乱,实在是当时任务紧急,现在终于知道c++为什么干不过java了,想做面向对象,但是又和c语言很像,c语言是机器语言,用人类的思维方式去理解实在是难受,就一个字符串分割,搞那么多,真是烦透了。要不是做视频音频领域的性能比较好,我真是+++++,哈哈,吐槽一下。
ps:后面开始用go语言写了,go比java更轻便,也不是说go语言更符合人类思维,是go的很多设计真是巧夺天工,集合了三位大神的精华(go语言的发明者)。

posted @ 2021-11-16 17:02  O-ll-O  阅读(100)  评论(0编辑  收藏  举报