c++学习笔记(入门)
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++-- 浙江大学 -- 翁恺 --国家精品课程(附源代码)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)