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. C#/VB.NET 如何在Excel中使用条件格式设置交替行颜色

    说起高亮数据行,不让人想起了交替颜色行,有的人把交替颜色行也都设置成高亮,不仅不美观,而且对阅读还是个干扰.隔行交替的颜色是为了阅读不串行,这些行只是环境,数据才是主体.那么如何通过C#/VB.NET ...

  2. 02 uniapp/微信小程序 项目day02

    一.分类 1.1 页面布局 首先创建cate的分支 定义基本结构,因为是两个需要滚动的区域,所以这里要用到组件 scroll 这个组件如果是y scroll那就要固定高度,x scroll那就要固定宽 ...

  3. k8s使用心得

    查看当前所有namespaces [root@master ~]# kubectl get namespaces -A NAME STATUS AGE default Active 63d hkd A ...

  4. 6_SSM

    一. ssm整合 1.1 项目创建 1.1.1 创建Maven项目 创建一个普通的Maven-web项目,名称为ssm 记得勾选上Create from archetype然后选择后缀为maven-a ...

  5. 05_Java基础知识

    Java基础知识 一. Java的语言特点 面向对象(贴近人类思维模式,模拟现实世界,解决现实问题) 简单性(自动内存管理机制,不易造成内存溢出:简化流程处理.语义清晰) 跨平台(操作系统.服务器.数 ...

  6. POJ2955 Brackets (区间DP)

    很好的区间DP题. 需要注意第一种情况不管是否匹配,都要枚举k来更新答案,比如: "()()()":dp[0][5]=dp[1][4]+2=4,枚举k,k=1时,dp[0][1]+ ...

  7. 关于javascript:void(0) 在不用的浏览器当中的表现

    原因在于三款浏览器,对三个属性的处理顺序不同. Chrome顺序:onclick -> href -> target IE和Firefox顺序:onclick -> target - ...

  8. 编程架构演化史:远古时代,从打孔卡(Punched Card)开始

    回想读书时记录到书本里的打孔纸带编程,到初学编程接触到的C语言高级编程,再到C++.Java面向对象语言产生:从面向过程系统设计 到面向对象系统设计:从三层结构到MVC.MVP.MVVM:从主机到虚拟 ...

  9. Vue3解决ElementPlus Drawer或弹出对话框不生效的问题

    第一时间检查你是否还在使用 :visible.sync="drawer" 来绑定事件框的隐藏和显示,vue3.0 已经更改为通过 v-model 来绑定事件框的显示与隐藏.

  10. MySQL的日志文件

    本文将重点介绍MySQL的日志文件类型,并讲解其作用,并结合一定实操演示,相信跟着做下来你会对MySQL有更深的理解. 文件的概念 在开始讲MySQL日志文件之前,首先我们要明确一下文件的概念.MyS ...