1 struct和class的区别

struct成员变量(成员函数)的访问属性缺省的情况下默认为public。

class成员变量(成员函数)的访问属性缺省的情况下默认为private。

2 初始化列表

class通过构造函数有两种初始化方式:

(1)在构造函数中通过赋值进行初始化

(2)用初始化列表初始化

两种初始化差异:构造函数中通过赋值初始化并不是构造函数初始化的时候完成的,要晚于构造函数的初始化。而初始化列表是是在初始化构造函数的时候初始化的,尤其是在初始化对象的时候,采用初始化列表的方式初始化,不然会有不必要的麻烦。所以建议都使用初始化列表进行初始化

Example

(a)在构造函数中用赋值进行初始化时报错

 1 class Tom
2 {
3 public:
4 Tom(int i)
5 {
6 }
7 ~Tom()
8 {
9 }
10 };
11
12 class Cat
13 {
14 private:
15 string type;
16 string name;
17 int age;
18 Tom tom;
19 public:
20 Cat()
21 {
22 type = "";
23 name = "";
24 age = 0;
25 tom = 0;
26 }
27 ~Cat()
28 {
29 }
30 };

报错内容: error: no matching function for call to 'Tom::Tom()'

(b) 用初始化列表初始化问题得到解决

 1 class Tom
2 {
3 public:
4 Tom(int i)
5 {
6 }
7 ~Tom()
8 {
9 }
10 };
11
12 class Cat
13 {
14 private:
15 string type;
16 string name;
17 int age;
18 Tom tom;
19 public:
20 Cat():tom(0), type(""), name(""), age(0)
21 {
22 }
23 ~Cat()
24 {
25 }
26 };

3 组合、继承

3.1 组合

组合玩的是类的对象(实的),也就是把另一个类的对象作为他的成员变量

Example

 1 /* 组合 */
2 class Huluwa
3 {
4 private:
5 string name;
6 string ability;
7 public:
8 Huluwa(int i):name(""), ability("")
9 {
10
11 }
12 ~Huluwa()
13 {
14 }
15 };
16
17 class Dawa
18 {
19 private:
20 Huluwa huluwa;
21 public:
22 Dawa(int i):huluwa(0)
23 {
24 }
25 ~Dawa()
26 {
27 }
28 };

3.2 继承

继承玩的是类(虚的),把父类的成员继承过来

Example

 1 /* 继承 */
2 class Huluwa
3 {
4 private:
5 string name;
6 string ability;
7 public:
8 Huluwa(int i):name(""), ability("")
9 {
10 }
11 ~Huluwa()
12 {
13 }
14
15 void SetName(string name_)
16 {
17 name = name_;
18 }
19 };
20
21 class Dawa : public Huluwa
22 {
23 public:
24 Dawa(int i):Huluwa(0)
25 {
26 }
27 ~Dawa()
28 {
29 }
30 };

继承的访问权限

public 子类可以直接访问、修改父类的所有public限制的成员变量和方法

private 子类拥有父类的所有的变量,但不能直接修改和访问,只能通过public接口访问

protected 对于子类跟public的权限一样,但对于其对象,权限与private一样

参考资料

感谢B站 up主【编程不止Coding】整理的视频 --> 面向对象设计C++-- 浙江大学 -- 翁恺 --国家精品课程(附源代码)

https://www.bilibili.com/video/BV1yQ4y1A7ts?from=search&seid=1378598890214751734&spm_id_from=333.337.0.0

c++学习笔记(入门)的更多相关文章

  1. PHP学习笔记 - 入门篇(5)

    PHP学习笔记 - 入门篇(5) 语言结构语句 顺序结构 eg: <?php $shoesPrice = 49; //鞋子单价 $shoesNum = 1; //鞋子数量 $shoesMoney ...

  2. PHP学习笔记 - 入门篇(4)

    PHP学习笔记 - 入门篇(4) 什么是运算符 PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. PHP中的算术运算符 算术运算符主要 ...

  3. PHP学习笔记 - 入门篇(3)

    PHP学习笔记 - 入门篇(3) 常量 什么是常量 什么是常量?常量可以理解为值不变的量(如圆周率):或者是常量值被定义后,在脚本的其他任何地方都不可以被改变.PHP中的常量分为自定义常量和系统常量 ...

  4. PHP学习笔记--入门篇

    PHP学习笔记--入门篇 一.Echo语句 1.格式 echo是PHP中的输出语句,可以把字符串输出(字符串用双引号括起来) 如下代码 <?php echo "Hello world! ...

  5. LESS学习笔记 —— 入门

    今天在网上完成了LESS的基础学习,下面是我的学习笔记.总共有三个文件:index.html.main.less.mian.css,其中 mian.css 是 main.less 经过Koala编译之 ...

  6. Dubbo -- 系统学习 笔记 -- 入门

    Dubbo -- 系统学习 笔记 -- 目录 入门 背景 需求 架构 用法 入门 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行, ...

  7. Netty学习笔记-入门版

    目录 Netty学习笔记 前言 什么是Netty IO基础 概念说明 IO简单介绍 用户空间与内核空间 进程(Process) 线程(thread) 程序和进程 进程切换 进程阻塞 文件描述符 文件句 ...

  8. solr学习笔记-入门

    solr学习笔记 1.安装前准备 solr依赖java 8 运行环境,所以我们先安装java.如果没有java环境无法启动solr服务,并且会看到如下提示: [root@localhost solr- ...

  9. ADO.NET 学习笔记 入门教程

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63 这是本人在 ...

  10. 0042 MySQL学习笔记-入门--01

    基本概念: 数据库DB(database): 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): 管理数据库的一套软件 ...

随机推荐

  1. WebDriver常见操作

    本文当个记录贴,记录WebDriver常用的一些函数(含自己封装的函数) 让WebDriver使用浏览器用户设置 1 option = webdriver.ChromeOptions() 2 opti ...

  2. Bootstrap Blazor 开源UI库介绍-Table 虚拟滚动行

    今天我们来介绍一下 Bootstrap Blazor 中 Table 组件的虚拟滚动行,什么是虚拟滚动呢,我查到的解释是:只渲染可视区域的列表项,非可见区域的 完全不渲染,在滚动条滚动时动态更新列表项 ...

  3. C#:winform窗体 实现类似QQ的窗体在桌面边缘停靠和隐藏

    设计思路:1.使用定时器(Timer)来监控鼠标位置和窗体位置,并实现窗体的停靠和隐藏2.当鼠标拖动窗体时,窗体才有可能根据自身位置决定是否停靠3.如果窗体四周没有接触到屏幕边缘则不会停靠4.如果窗体 ...

  4. Linux安装gitlab仓库

    linux安装gitlab仓库 注:此安装方式是安装在docker上 1. 安装docker 可根据链接文档进行操作安装 https://www.cnblogs.com/cherish-sweet/p ...

  5. Windows 11 新材质 Mica Alt 效果展示

    本文是 WinUI 3 踩坑记 的一部分,该系列发布于 GitHub@Scighost/WinUI3Keng,若内容出现冲突以 GitHub 上的为准. 微软在 2022-09-02 更新了官方文档, ...

  6. [题解] Atcoder Beginner Contest ABC 270 G Ex 题解

    点我看题 G - Sequence in mod P 稍微观察一下就会发现,进行x次操作后的结果是\(A^xS+(1+\cdots +A^{x-1})B\).如果没有右边那一坨关于B的东西,那我们要求 ...

  7. .NET 5 设计 API (资源站)

    跟新于 2022-11日 数据抓取端 随着数据的增多,问题也越来越多 用redis 主要是为了 以后进行,多个数据库写入. 例如我搭建一个 别的数据库论坛,我直接拿数据去redis里面拿,就不用跨库查 ...

  8. 个人数据保全计划:(1) NAS开箱

    前言 从几年前第一个硬盘故障导致参赛的文件丢失之后,我就开始意识到数据安全的重要性,开始用各种云盘做备份,当时还不是百度云一家独大,我们也都没意识到网盘备份是极其不靠谱的行为,直到因为某些不可抗力因素 ...

  9. Java云原生崛起微服务框架Quarkus入门实践

    @ 目录 概述 定义 GraalVM简介 为何使用 特性 官方性能 实战 入门示例 步骤 安装GraalVM 创建quarkus工程 Idea导入项目 Idea运行和调试 打包成普通的Jar 打包成依 ...

  10. 8.websocket slef概念

    self代表当前用户客户端与服务端的连接对象,比如两客户端发来了两个连接,我们可以把两个连接放在一起 # 定义全局变量 CONN_List = [] class LiveConsumer(Websoc ...