c++学习笔记(入门)
2024-09-08 18:36:35
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++-- 浙江大学 -- 翁恺 --国家精品课程(附源代码)
最新文章
- POJ 2503 字典树
- Visual Studio一秒变Node.js IDE
- JQuery Mobile + Cordova 实战一
- 责任链模式(Chain of Responsibility Pattern)
- HDOJ(HDU) 1718 Rank(水题、、、)
- 安装Visual Studio 2010之后怎样安装MSDN Library
- 常用SQL语句学习整理
- SRM 585 DIV 1 总结
- spring boot入门
- 【已解决】React中配置Sass引入.scss文件无效
- jsonp实现ajax跨域
- C#WinForm无边框窗体移动方法、模仿鼠标单击标题栏移动窗体位置
- 洛谷P1605走迷宫
- XOR+base64加密
- docker-compose编排
- POJ 1125 Stockbroker Grapevine(最短路基础题)
- Programming 2D Games 读书笔记(第三章)
- 浅谈脚本化css(一)
- C#类和结构体的异同点简单总结
- Jmeter测试带加密参数的接口