Hotodogo: Night-City
#Hello Edgerunners, welcome to the Night-City.

Welcome!

C++ Primer 010 : 构造函数

本篇主要介绍C++ 中的构造函数。 构造函数,就是一个函数名与类名完全相同且没有返回值(连void也没有)的函数。 class 类名 { 类名(行参表) {// 构造函数 // 构造函数体 } }; 如果一个类中没有提供构造函数,那么系统会自动提供一个缺省的无参构造函数,一旦在类中定义过构造函数,那么系统不再提供缺省构造函数,此时可以通过构造函数重载来解决问题。 当一个对象被创建时,系统会自动调用构造函数来初始化当前对象 无参构造函数并不是指构造函数中必须没有参数(可以有参数,但需要有缺省值),而是指可以以无参的形式去调用(当然,是系统自动调用)...

C++ Primer 011 : 初始化列表

本篇主要介绍C++ 中的初始化列表。 class 类名 { 类名(行参1,行参2):成员变量1(行参1),成员变量2(行参2) { //成员变量1 = 行参1; //成员变量2 = 行参2; //... } }; 成员变量的初始化顺序和初始化列表中的顺序无关,而是取决于成员变量的声明顺序。 来看一个例子,找出下面代码的不妥之处: class Dumy { private: int m_len; string m_str; public: Dumy(string str):m_str(str),m_l...

C++ Primer 012 : 支持自定义类型转换的构造函数

本篇主要介绍C++ 中支持自定义类型转换的构造函数。 目标类::目标类(const 源类 &源类对象) { //自定义规则进行复制 //可以使用初始化列表的方式 } 实现从源类到目标类之间的隐式类型转换。 使用explicit关键字修饰的构造函数,表示这个构造函数只能用于显式类型转换,防止潜在的错误。 /* 支持自定义类型转换的构造函数userDefined.cpp */ #include <iostream> using namespace std; //声明Point2d class Point2d; class Point...

C++ Primer 013 : this 指针

本篇主要介绍 C++ 中的 this 指针。 关键字 this 就是一个指针,对于成员函数而言 this 指针指向调用对象的地址,而对于构造函数而言this指针指向正在被创建的对象的地址。 可以用于区分构造函数中成员变量名和行参名相同的情况(使用初始化列表例外) this->m_name = m_name; 可以用于返回自引用的情况 可以作为函数的参数来实现对象间的交互 /* this 指针用于区分构造函数中成员变量名和行参名相同的情况(使用初始化列表例外)this1.cpp */ #include <iostream> #include <...

C++ Primer 007 : 引用

本篇主要介绍C++ 中的引用。 什么是引用 引用实际上不是一种独立的数据类型,类似于 C 中的指针,本质就是对变量起别名,例如: int a = 66; int& b = a;// 表示给变量 a 起别名为 b /* &b : 取地址 1&2: 按位与 */ b++;// b = 67 a = 67 int& c = b;// c = 67 引用和指针的比较 引用必须初始化,指针可以不初始化 int& b; // 错误,必须初始化 int* p; // 野指针 引用不可以为空,指针可以为空 int& a = NULL; // 错...

C++ Primer 008 : 类型转换

本篇主要介绍C++ 中的类型转换。 类型转换分为隐式与显式两种情况,隐式指较小的数据类型转为较大的数据类型,编译器会自动进行操作,例如 int 转换为 long;显式则与隐式相反,因为可能造成数据丢失等情况因此必须在代码中写明才有效,所以也被称为强制类型转换。 char c = 'a'; int i = (int)c; // C 风格 int i = int(c); // C++ 风格 静态类型转换 目标类型 变量名 = static_cast<目标类型>(源类型变量); 在源类型和目标类型之间只要有一个方向可以做隐式类型转换,那么在两个方向上都可以使用静态类型转换,反之如...

C++ Primer 001 : 概述

在阅读本系列之前我假定你已经学习过 C 语言,因此我主要对 C++ 与 C 语言的不同之处做出介绍。如果你没有学习过 C 语言,你也可以参考我关于 C 语言的系列博客。希望这一系列能帮到有需要的朋友们。 从何而来 C++ 这门语言于 1983 年诞生,由本贾尼斯特劳斯特卢普在 C 语言的基础上改进和扩充而来,起初被命名为 C with classes,后收到 ++ 运算符启发改为 C++。 相关历史事件 1983 年,C++ 语言诞生 1985 年,CFront 1.0 诞生,第一个商用编译器 1987 年,GNU C++ 编译器(g++) 1990 年,Borland C++...

C++ Primer 002 : 命名空间

在 C++ 中,当程序中需要用同名的变量和函数时,使用命名空间来限定不同变量和函数所在的作用域。 格式 定义命名空间的格式是这样的: namespace 名称 { 变量、函数等 } 使用 使用命名空间指令的方式也很简单: using namespace 命名空间的名称; 例如: using namespace std; 当然,你可以通过作用域限定符 :: 来使用命名空间中制定内容: using 命名空间的名称::要使用的标识符; 例如: using std::cout; 或者: std::cout << "输出一条测试信息"; 无...

C++ Primer 003 : 结构体、联合、枚举

本篇主要介绍 C++ 中得结构体、联合与枚举。 结构体 C++ 中使用结构体类型定义变量时,struct 关键字可以省略,如: struct Person {}; struct Person p1; Person p2; C++ 中的结构中可以定义函数 struct Person { void show(){} }; 联合 C++ 中的联合在定义联合变量时可以省略关键字 union,并且支持匿名联合,也即省略 union 后面的类型名 枚举 C++ 中的枚举在定义枚举变量时可以省略关键字 enum,C++ 中的枚举类型是一种独立的数据类型,不能使用整型数据进行赋值。 例如我们...

C++ Primer 004 : bool 类型

本篇主要介绍C++ 中的 bool 类型。 bool类型 bool 类型用来表示逻辑值,它只有两个值: true1 与 false,我们可以通过函数 boolalpha 来将 bool 值显示为 true 或 false 字面值。 bool 类型可以定义变量,也可以定义指针,可以作为函数的参数,也可以作为函数的返回值。 回顾 C 语言中的知识,取值为 0、0.0、NULL 或 \0 均可以表示为假。...

C++ Primer 005 : 函数 (重载、缺省、哑元与内联)

本篇主要介绍C++ 中的函数重载、缺省参数、哑元与内联。 函数重载 概念 同一个作用域中,函数的名字相同,函数的参数列表不同,这样的函数构成重载。 方式 函数名相同,函数的参数类型不同 函数名相同,函数的参数个数不同 函数名相同,函数的参数顺序不同 const 修饰的常函数和非 const 修饰的函数也可以构成重载 特殊重载关系 使用不同范围的方式导入命名空间时,那么局部优先 当使用相同范围的方式导入命名空间时,那么如果不构成重载,则编译报错产生歧义 函数匹配原则 完全匹配 > 常量转换 > 升级转换 > 标准转换 > 自定义类型转换 &...

C++ Primer 006 : 动态内存

本篇主要介绍C++ 中的动态内存。 在 C 语言中我们可以使用 malloc、calloc、realloc、free 等进行动态内存操作,在 C++ 中,除了兼容 C 中的动态内存分配的方法之外,还提供了两个关键字 new 和 delete。 使用new/delete 来分配指定类型变量的内存: int* p = new int; //申请内存的时候进行初始化 int* p = new int(66); //释放内存空间 delete p; p = NULL; 申请指定类型数组大小的内存: int* p = new int[5]; //申请数组大小的内存并初始化(C++11标准) int*...

What's this?

The Night-City version of Hotodogo inspired by Cyberpunk 2077. Not finished yet.

Pinned Message

The Founder and CEO of Infeca Technology.

Developer, Designer, Blogger.

Big fan of Apple, Love of colour.

Feel free to contact me.

反曲点科技创始人和首席执行官。

开发、设计与写作皆为所长。

热爱苹果、钟情色彩。

随时恭候 垂询