自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 问答 (2)
  • 收藏
  • 关注

原创 管理虚函数的一些小工具(override)(final)

基类class A{public: virtual void func() { cout << "in class A" << endl; }};后续的实验均以上面这个基类展开进行。override当class B继承了class A,并想重定义A的虚函数时,由于某种神秘力量,导致写成了这个样子:class B : public A{publ...

2020-02-24 15:19:02 723

原创 C++模板类的友员 —— 精准是一种礼仪

1、最简单的友员形式#include <iostream>using namespace std;template <typename T> /* 声明模板类 */class A{ T num; friend void show_size(); /* 指定友员 */};A<double> a_global1;A<int> a_...

2020-02-15 23:34:30 262

原创 多重继承/菱形继承(virtual)(虚基类)

1、一个我从来没见过的场景A作为基类B、C均public继承自AD同时继承自B、Cclass A{public: A() : number(-1) { cout << "A()" << endl; } A(int n) : number(n) { cout << "A(" << n << ")" << endl...

2020-02-09 17:25:08 341

原创 枚举成员名称冲突(重名)的终极解决方案 —— class枚举(enum)

先从一个问题说起enum ENUM1{ normal, big, mid, small};enum ENUM2{ normal, big, mid, small};如上,2种不同的枚举类型却包含了名称相同的成员,编译会产生报错:error: ‘normal’ conflicts with a previous declaration实际的报错远比这要多,因为EN...

2020-02-01 21:14:27 3937

原创 如何在class中优雅地使用常量以及对static成员的探讨(const)(static)(enum)

如果在class中想要定义常量,直观上是想用这样的方式class A{public: const int length = 10; char buffer[length];};上面这个逻辑在class外是行得通的,也是最常用的。但是在class内部,上面的代码编译时会报错:error: invalid use of non-static data member 'A::lengt...

2020-02-01 17:48:37 309

原创 C++的private并没有听起来那么“保密”(virtual)(using)

前言从常识角度看,private权限的下的成员对外是永远不可见的,而且private成员也不会公开给继承的子类,所以似乎private成员(尤其是成员函数)似乎具有了很强的安全性——既然无论如何别人都使用不了,那么该class的设计者可以完全控制private成员的使用时机,所以可以简化一些错误判断或者时序控制工作。然而实际则不尽然,在一些特殊情况下,仍旧有可能存在突破private限制,进行...

2020-02-01 13:15:28 309

原创 explicit——为毁灭而生的补丁

构造函数的隐式转换如果构造函数只有1个参数,则可以用等号隐式地调用构造函数,如下所示#include <iostream>using namespace std;class A{public: /* explicit */ A(int n) : number(n) { cout << n << " create" << endl...

2020-01-31 21:51:35 823

原创 指向类成员的指针(.*)(->*)

要点指针是有类型的,这点和「通常的指针」一样,指向int的指针也只能指向int类型的数据相对于「通常的指针」,增加了对指向对象的限制 —— 指向的对象限定为某个class中的成员这种指针不可以单独使用,需要配合一个具体存在的对象才有意义#include <bits/stdc++.h>using namespace std;class A{public: int...

2020-01-31 20:50:41 414

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除