
C++笔记
文章平均质量分 85
Renekton_bhk
这个作者很懒,什么都没留下…
展开
-
管理虚函数的一些小工具(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 · 842 阅读 · 0 评论 -
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 · 309 阅读 · 0 评论 -
多重继承/菱形继承(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 · 428 阅读 · 0 评论 -
枚举成员名称冲突(重名)的终极解决方案 —— 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 · 5549 阅读 · 0 评论 -
如何在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 · 432 阅读 · 0 评论 -
C++的private并没有听起来那么“保密”(virtual)(using)
前言从常识角度看,private权限的下的成员对外是永远不可见的,而且private成员也不会公开给继承的子类,所以似乎private成员(尤其是成员函数)似乎具有了很强的安全性——既然无论如何别人都使用不了,那么该class的设计者可以完全控制private成员的使用时机,所以可以简化一些错误判断或者时序控制工作。然而实际则不尽然,在一些特殊情况下,仍旧有可能存在突破private限制,进行...原创 2020-02-01 13:15:28 · 390 阅读 · 0 评论 -
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 · 875 阅读 · 0 评论 -
指向类成员的指针(.*)(->*)
要点指针是有类型的,这点和「通常的指针」一样,指向int的指针也只能指向int类型的数据相对于「通常的指针」,增加了对指向对象的限制 —— 指向的对象限定为某个class中的成员这种指针不可以单独使用,需要配合一个具体存在的对象才有意义#include <bits/stdc++.h>using namespace std;class A{public: int...原创 2020-01-31 20:50:41 · 515 阅读 · 0 评论