博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2023年3月13日

摘要: X 阅读全文

posted @ 2023-03-13 09:43 乔55 阅读(7) 评论(0) 推荐(0) 编辑

摘要: ## 多态最常用的例子 ```cpp // 父类 class animal { public: virtual void eat() { cout eat(); ptr->sleep(); } void test() { animal a; person p; dog d; xxx_fun(&a); 阅读全文

posted @ 2023-03-13 09:42 乔55 阅读(14) 评论(0) 推荐(0) 编辑

摘要: ## 多态基本概念 ```cpp // 什么是多态 - 多态:由继承产生的相关的不同的类,其对象对同一消息作出不同响应 - 多态性:允许同一函数或操作符有不同的版本,不同对象执行不同的版本时具有多态性 - 编译时的多态性:表现为函数名、操作符重载 - 运行时的多态性:通过派生类和虚继承类来实现 - 阅读全文

posted @ 2023-03-13 09:41 乔55 阅读(26) 评论(0) 推荐(0) 编辑

摘要: 类模板详解 编译器不能为类模板推断模板参数类型,只能通过<>尖括号来指定模板参数类型 阅读全文

posted @ 2023-03-13 09:40 乔55 阅读(15) 评论(0) 推荐(0) 编辑

摘要: ## 友元的概念 ```cpp // 基本概念 - 在类Test内将外部XX声明为Test类的友元类或友元函数,则Test函数可以访问Test所有成员 - 友无关系3大特点 - 友元关系不能被继承 - 友元关系是单向的,如A是C是友元类,但并不表示C是A的友元类 - 友元关系不能传递性,如,A是B友 阅读全文

posted @ 2023-03-13 09:39 乔55 阅读(8) 评论(0) 推荐(0) 编辑

摘要: ## 继承与派生的基本概念 ```cpp // 子类与父类的关系 - 子类对象占内存空间大,可以直接将子类对象赋值给父类对象:parent p = c; - 子类对象占内存空间大,可以直接当做父类使用,只取其有用部分 - 父类指针可以指向子类对象。子类对象能满足父类指针的指向要求 - 子类指针不能直 阅读全文

posted @ 2023-03-13 09:39 乔55 阅读(38) 评论(0) 推荐(0) 编辑

摘要: ## 类的6个重要成员函数 ```cpp class Test { private: int data; public: // 1、普通构造函数 Test(int d = 0) :data(d){} // 2、拷贝构造函数 Test(const Test& that) { data = that.d 阅读全文

posted @ 2023-03-13 09:38 乔55 阅读(7) 评论(0) 推荐(0) 编辑

摘要: ## 基本概念 ```cpp // 常函数 - void getK(Time* const this)const{} - const在函数后边的含义是,该成员函数不能修改类成员变量 - 既然是针对于成员函数,那么普通构造函数就不能在其后边加const - 只有成员函数才能声明为const函数,普通函 阅读全文

posted @ 2023-03-13 09:38 乔55 阅读(11) 评论(0) 推荐(0) 编辑

摘要: ## this指针在于什么地方 ```cpp 1. // 每个普通成员函数的形参都隐含了:Time* const this,Time是类 2. // const成员函数形参隐含了:const Time* const this 3. // 调用成员函数时,会把该对象的地址传递给this指针 4. // 阅读全文

posted @ 2023-03-13 09:37 乔55 阅读(14) 评论(0) 推荐(0) 编辑

摘要: ## 运算符重载概念 ```cpp 1. // 运算符重载是C++强大的特性之一,运算符重载有以下几种限制 // 不可臆造新的运算符 // 不能改变运算符原有的优先级、结合性和语法结构,不能改变操作数个数 // 运算符重载不家使用过多 // 运算符重载含义必须清楚,不能有二义性 // 必须遵循函数重 阅读全文

posted @ 2023-03-13 09:36 乔55 阅读(50) 评论(0) 推荐(0) 编辑

摘要: 如何将基类的构造函数继承给派生类 class A { public: int i; int j; A(int i1, int j1){ } }; class B :public A { public: // using:让某个名字在当前作用域内可见。 // 此处using语句,会将基类的每个构造函数 阅读全文

posted @ 2023-03-13 09:36 乔55 阅读(12) 评论(0) 推荐(0) 编辑

摘要: ## 创建类对象的方式 ```cpp Time mytime; // 调用无参构造函数 Time mytime1(1, 12, 20); // 调用有参构造函数 Time mytime2{ 1,12,20 }; // 调用有参构造函数 Time mytime3 = { 1,12,20 }; // 调 阅读全文

posted @ 2023-03-13 09:35 乔55 阅读(29) 评论(0) 推荐(0) 编辑

摘要: ## RTTI基本概念 - RTTI:run time type identification,也叫运行时类型识别 - 通过RTTI,程序能够使用基类的指针或者引用来检查这些指针或引用所指对象的实际类型 - RTTI,可看成是系统提供给我们的一种功能,此种功能可以通过2个运算符来体现 - dynam 阅读全文

posted @ 2023-03-13 09:35 乔55 阅读(11) 评论(0) 推荐(0) 编辑

摘要: 临时对象详解 class Test { public: int a; int b; Test(int a1 = 0, int b1 = 0) :a(a1), b(b1) { cout << "普通构造" << endl; } Test(const Test& t) :a(t.a), b(t.b) { 阅读全文

posted @ 2023-03-13 09:34 乔55 阅读(20) 评论(0) 推荐(0) 编辑

摘要: 拷贝构造函数 // 基本概念 1. // 系统提供的默认拷贝构造函数,会逐个拷贝成员变量值,但只会进行简单的属性拷贝 2. // 怎样区分到底是拷贝构造函数还是重载等号操作符 1. 区分该操作到底是初始化对象,还是给已经存在的类对象赋值 1. Time t1 = t2; // 用t2初始化t1对象, 阅读全文

posted @ 2023-03-13 09:33 乔55 阅读(15) 评论(0) 推荐(0) 编辑

摘要: ## 静态成员变量概念 - 属于整个类所有,不需要依赖任何对象,在类外全局数据区单独开辟空间 - 在类内声明,在类外使用 ## 访问静态成员变量的方式 - 通过类名直接访问public属性的静态成员变量 - 能过对象直接访问public属性的静态成员变量 - 通过类的静态成员函数直接访问本类的成员变 阅读全文

posted @ 2023-03-13 09:31 乔55 阅读(15) 评论(0) 推荐(0) 编辑

摘要: ## 类的基本概念 ```cpp // 类的基本概念 - 类的定义:类用于抽象地描述一类事物所特有的属性和行为 - 类的在在特性:封装、继承、多态 - 封装:是面向过程的最基本特性,把数据和函数合成一个整体,用类与对象实现 - 非空对象的大小:按实际成员变量的大小来分配空间,不包括成员函数。 - 空 阅读全文

posted @ 2023-03-13 09:30 乔55 阅读(68) 评论(0) 推荐(0) 编辑

摘要: memset void *memset(void *s, int c, size_t n); 功能:把s指向的n个内存单元设置成对应的c值 阅读全文

posted @ 2023-03-13 09:29 乔55 阅读(6) 评论(0) 推荐(0) 编辑

摘要: 为什么要对齐 32位架构的cpu,4个字节为一个读周期,设4字节变量在内存首地址为addr addr出现在4的整数倍地址处,方便一个读周期读取 若跨越2个周期拼凑一个4字节,效率低 对齐值 自身对齐值 整数类型自身的对齐值:内置类型自己的尺寸 结构体自身对齐值:数据成员最大的那个自身对齐值 指定对齐 阅读全文

posted @ 2023-03-13 09:29 乔55 阅读(93) 评论(0) 推荐(0) 编辑

摘要: memchr void *memchr(const void *s, int c, size_t n); 阅读全文

posted @ 2023-03-13 09:28 乔55 阅读(5) 评论(0) 推荐(0) 编辑