c++类 笔记(陆续更新该文档)

news2024/11/24 8:52:25

派生类

#include <iostream>
using namespace std;
class Box{
   private://类私有,只有成员可以调用 也就是说你不可以通过box1.a来调用 ,这些变量其实你默认不用写private 这个变量,只要放在最上面他默认就是 私有
      int a=1;
   protected://protected(受保护)成员
      int b=2;
   public:
      int e=3;
};
class Neet:Box{//派生类
   public:
      void c(){
         // cout<< a;//private 在派生类里是      不可以引用的
         // cout << b;//protected 在派生类里是   可以调用的
         cout <<e;   //public 在派生类里也是     可以访问的
      };
};

int main(){
   Neet Neet1;
   Neet1.c();
}

public 继承

#include <iostream>
using namespace std;
class A{
   private:
      int a=1;
   public:
      int b=2;
   protected:
      int c=3;
};
class B:public A{
   // int d=c; // 在main里cout << b.d;//会报错
   int d=b;    // 3
   // int d=a;    // 直接报错,A里面private 不能集成和派生
   public:
      void g(){
         // cout << a;//报错
         // cout << b;//2
         cout << c;//3
      };
};
int main(){
   B b;
   b.g();
   // cout << b.d;//报错
}

 private 继承

#include <iostream>
using namespace std;
class A{
   private:
      int a=1;
   public:
      int b=2;
   protected:
      int c=3;
};
class B:private A{
   // int d=c; // 在main里cout << b.d;//会报错
   int d=b;    // 3
   // int d=a;    // 直接报错,A里面private 不能集成和派生
   public:
      B(int x){
         cout << x<<" "<<d;
      };
};
int main(){
   B b(10);//会执行 B里面的b的大写方法也就是B()
   // b.g();
   // cout << b.d;//报错
}

 protected 继承

#include <iostream>
using namespace std;
class A{
   private:
      int a=1;
   public:
      int b=2;
   protected:
      int c=3;
};
class B:protected A{
   int d=c; // 在main里cout << b.d;//会报错
   // int d=b;    // 3
   // int d=a;    // 直接报错,A里面private 不能集成和派生
   public:
      B(int x){
         cout << x<<" "<<d;
      };
};
int main(){
   B b(10);//会执行 B里面的b的大写方法也就是B()
   // b.g();
   // cout << b.d;//报错
}

 构造函数

简单的说   A里面的A(),就是constructor,A和A()的命名要一样。他会在 A a;的时候被执行。

void A::set(int x){ 则可以对A里面的方法进行编写。

#include <iostream>
#include <windows.h>
using namespace std;
class A{
   int c;
   public:
      A();
      void set(int);
      int get(void);
};
A::A(){
   cout<<"你好"<<endl;
};
void A::set(int x){
   c=x;
}
int A::get(void){
   return c;
}
int main(){
   SetConsoleOutputCP(65001);
   A a;
   a.set(3);
   cout << "c="<<a.get();
}

带参数的构造函数

#include <iostream>
#include <windows.h>
using namespace std;
class A{
   int c;
   public:
      A(int);
};
A::A(int x){
   c=x;
   cout<<c<<endl;
};

int main(){
   SetConsoleOutputCP(65001);
   A a(20);
}

 使用初始化列表来初始化字段

A::A(int x):c(x),d(x+1){//等价于  c=x; d=x+1其实就是缩写

其实就是把上个案例写在A::A(int x){的   c=x提到上面来而已,没啥特别的,倒是方便 一目了然哪些是classA 里面的。

#include <iostream>
#include <windows.h>
using namespace std;
class A{
   int c,d;
   public:
      A(int);
};
A::A(int x):c(x),d(x+1){//等价于  c=x; d=x+1其实就是缩写
   cout<<"c="<<c<<"\nd="<<d<<endl;
};
int main(){
   SetConsoleOutputCP(65001);
   A a(20);
}

其实构造函数可以在A class的时候就写了,效果一样,如下

#include <iostream>
#include <windows.h>
using namespace std;
class A{
   int c,d;
   public:
      A(int x):c(x),d(x+1){//等价于  c=x; d=x+1其实就是缩写
         cout<<"c="<<c<<"\nd="<<d<<endl;
      }
};
int main(){
   SetConsoleOutputCP(65001);
   A a(20);
}

类的解析函数

#include <iostream>
#include <windows.h>
using namespace std;
class A{
   public:
      A(){//构造函数
         cout<<"-----函数开始-----"<<endl;
      };
      ~A(){//解析函数
         cout<<"-----函数结束-----"<<endl;
      };
      void console(){
         cout<<"csole被执行了"<<'\n';
      }
};
int main(){
   SetConsoleOutputCP(65001);
   A a;
   a.console();
}

类的多继承

记住  A跟B的如果都定义了 int a;那你在c里调用 a会提示定义模糊

#include <iostream>
#include <windows.h>
using namespace std;
class A{//被集成的类叫做基类
   public:
      int a=1;
};
class B{
   public:
      int b=2;
};
class C:A,B{
   public:
      C(){
         cout<<"a="<<a<<endl;
         cout<<"b="<<b;
      }
};
int main(){
   C c;

}

 多继承 定义模糊解决方案

 两个基类都定义了a=1,c类继承调用的时候,可以写成 A::a,或者B::a

#include <iostream>
#include <windows.h>
using namespace std;
class A{
   public:
      int a=1;
};
class B{
   public:
      int a=1;
};
class C:A,B{
   public:
      C(){
         cout<<"a="<<B::a<<endl;
      }
};
int main(){
   C c;
}

auto 存储类

我就记住一个,自动判断变量类型

#include <iostream>
#include <typeinfo>
#include <windows.h>
using namespace std;

int main(){
   auto a=10.52;
   cout<<typeid(a).name();
}

typeid是判断变量类型的函数 

register 存储类

寄存器只用于需要快速访问的变量,会提变量的访问效率

(在 /std:c++17 模式及更高版本中可用) 博主用的c++17

#include <iostream>
#include <typeinfo>
#include <windows.h>
using namespace std;

int main(){
   //寄存器只用于需要快速访问的变量,比如计数器。还应注意的是,定义 'register' 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。
   for(register int i=0;i<100;i++){
      cout << i<<'\n';
   }
}

 static 存储类

static count 10 我只能说,我不理解他的“其他文件”指的啥  因为我#include "b.cpp" 之后 不用extern也可以调用,后面如果我知道了在回来补充这篇博文吧

这篇其实还要扩展一个阅读===》.cpp调用 .cpp和h的demo_雪狼之夜的博客-CSDN博客

#include <iostream>
#include <typeinfo>
#include <windows.h>
using namespace std;
static int count =10;//别的文件不能引用 count,static 限制变脸count 在本文件内

int main(){
   extern void console();
   console();
}
void console(){
   static int x=0;
   if(x<count){
      x++;
      count--;
      cout <<"x="<<x<<",count="<<count<< endl;
      console();
   }
}

如果函数内的 x不加static 就会变成

extern 存储类 

​看博主这篇===》​c++的extern用法理解_雪狼之夜的博客-CSDN博客

mutable、thread_local  存储类跳过,看不懂!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AlgoC++:课程总结

目录 课程总结前言1. 未讲解内容2. 复习2.1 矩阵求导2.2 优化方法2.3 具体的算法 3. 未来怎么学C(必看&#xff01;&#xff01;&#xff01;) 课程总结 前言 手写AI推出的全新面向AI算法的C课程 Algo C&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考。 本次课…

【嵌入式环境下linux内核及驱动学习笔记-(8-内核 I/O)-信号驱动】

目录 3 信号驱动的异步通知3.1 linux异步通知编程3.1.1 什么是信号3.1.2 信号的工作流程: 3.2. 应用层3.2.1 信号接收 signal函数3.2.2 应用层 fcntl 函数3.2.3 应用层信号驱动机制步骤 3.3 驱动层3.3.1 驱动层模板3.3.2 驱动层 实现fasync函数3.3.3 fasync_helper3.3.4 struct…

Golang-常见数据结构Slice

Slice slice 翻译成中文就是切片&#xff0c;它和数组&#xff08;array&#xff09;很类似&#xff0c;可以用下标的方式进行访问&#xff0c;如果越界&#xff0c;就会产生 panic。但是它比数组更灵活&#xff0c;可以自动地进行扩容。 了解 slice 的本质, 最简单的方法就是…

MySQL 一条SQL语句是如何执行的?

总览 ​ 所以今天我们把MySQL拆解一下&#xff0c;看看里边有哪些零件。下边是MySQL的基本架构示意图。 大体来说&#xff0c;MySQL分为Server层和存储引擎两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&am…

小白也能懂的可转债配债价格计算

可转债配债如何计算 先给理论公式&#xff1a; 配债10张/1手所需的钱数 配债所需股数 * 当前的股价 这个公式应该很好理解&#xff0c;不需要做过多的解释。 那&#xff0c; 为什么如此简单的公式&#xff0c;还是很多人不会算&#xff0c;是因为&#xff1a; 配债所需的股数跟…

类与对象之构造函数

文章目录 导读类的6个默认构造函数构造函数概念特性 析构函数概念特性 拷贝构造函数概念特性 赋值运算符重载运算符重载赋值运算符重载前置和后置重载 导读 本文是md导入的可能格式有点乱&#xff0c;希望各位理解一下 类的6个默认构造函数 默认成员函数&#xff1a;用户没有…

五一堵车 | AI“高速”车辆检测轻而易举监测大家安全

点击蓝字关注我们 关注并星标 从此不迷路 计算机视觉研究院 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 作者&#xff1a;Edison_G 五一节不管是离开小城镇还是进入大城市&#xff0c;每个高速路口都是堵车&#xff0c;现在人工智能愈来愈发达&#xff0c…

git fetch时,FETCH_HEAD和.git\refs\remotes\origin会有哪些变化

目录 github远程仓库状态clone 到本地对新clone的仓库直接 fetchgit fetchgit fetch origingit fetch origin test1git fetch origin test2:test22 结论 github远程仓库状态 clone 到本地 git fetchgit fetch origingit fetch origin test3git fetch origin test2:test22 git f…

Photon AI Translator 和做产品的一些思考

近 4 个月内我一直在做 Apple 平台的产品&#xff0c;虽然从使用量来说「简体中文」用户是占多数&#xff0c;但我一直有做多语言的支持&#xff1a;英语、简体中文和繁体中文。习惯上 Google 翻译的我&#xff0c;基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Trans…

复古决战快速施法穿墙秒怪分析流程及安全防护

《决战》是一款非常古老的RPG游戏&#xff0c;作为热血传奇同期的热门游戏也深受7080后的喜爱。 在十几年前玩这个游戏时&#xff0c;我也使用过瞬移穿墙&#xff0c;快速施法秒怪等功能的辅助。 下面我们就用一个自己架设的单机版来回顾一下当年辅助开发的流程&#xff0c;并…

【三十天精通Vue 3】 第二十二天 Vue 3的UI框架详解

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 引言一、常用的Vue 3 UI框架概览1. 常用的Vue 3 UI框架有哪些&…

不同主题增删改查系统【控制台+MySQL】(Java课设)

有很多顾客都是只要实现各种各样的增删改查系统即可&#xff0c;只是主题和数据库表不一样&#xff0c;功能都是增删改查这四个功能&#xff0c;做出来的效果和下面的截图是一样的&#xff0c;后续这样的增删改查系统的运行效果请参考下面的截图&#xff0c;我就不一一演示了&a…

OSPF-MGRE综合实验

拓扑结构&#xff1a; 要求&#xff1a; 1、R6为ISP只能配置IP地址&#xff0c;R1~R5的环回为私有网段 2、R1/4/5为全连的MGRE结构&#xff0c;R1/2/3为星型的拓扑结构&#xff0c;R1为中心站点 3、所有私有网段可以互相通讯&#xff0c;私有网段使用OSPF协议完成 使用的设备…

【Java笔试强训 13】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;参数解析…

忆暖行动|“ 还可以留一点做成柿饼,做法也很简单,就是挑硬柿子把皮削掉,用开水烫个几秒”

追忆过往 感恩现在 我们知道&#xff0c;现在的生活与之前相比发生了翻天覆地的变化&#xff0c;您觉得有什么变化呢&#xff1f; 现在的生活好啊&#xff0c;家家房子都盖起来了&#xff0c;你瞅我这房子&#xff0c;是我子女们大前年给我盖的&#xff0c;我原来都是住的土房…

【Unity-UGUI控件全面解析】| Image 图片组件详解

🎬【Unity-UGUI控件全面解析】| Image 图片组件详解一、组件介绍二、组件属性面板2.1 Image Type三、代码操作组件四、组件常用方法示例4.1 简易血条制作4.2 简易技能冷却条制作五、组件相关扩展使用5.1 Mask 遮罩💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本…

Java每日一练(20230430)

目录 1. 文本左右对齐 &#x1f31f;&#x1f31f;&#x1f31f; 2. 求素数和 &#x1f31f; 3. 整数转换英文表示 &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专…

mycat的基本介绍及安装

海量数据存储解决方案之分库分表原理解析及mycat安装及使用_已经存在大量数据 可以使用mycat分表吗_踩踩踩从踩的博客-CSDN博客 Mycat核心概念工作原理及高级特性分析_mycat-mini-monitor_踩踩踩从踩的博客-CSDN博客 前言 在之前的文章中&#xff0c;介绍了一部分的mycat&am…

Web App Manager - 将任何网站转换为应用程序

Web App Manager - 将任何网站转换为应用程序 WebApp Manager 是一款实用程序&#xff0c;由 Linux Mint 和 Peppermint 基于 Peppermint 的 ICE 合作创建——用户可以使用该应用程序将他们喜欢的应用程序转换为独立的 Web 应用程序&#xff0c;它最早于 2010 年首次发布&…

CKA/CKS/CKAD认证考试攻略

什么是CKA考试&#xff1f; CKA认证考试是由Linux基金会和云原生计算基金会(CNCF)创建的&#xff0c;以促进Kubernetes生态系统的持续发展。该考试是一种远程在线、有监考、基于实操的认证考试&#xff0c;需要在运行Kubernetes的命令行中解决多个任务。CKA认证考试是专为Kube…