- 博客(8)
- 收藏
- 关注
原创 C++构造函数与析构函数(一)
通常情况下构造函数应该声明为公有函数,否则他不能像其他成员函数那样被显式地调用;构造函数可以有任意类型和任意个数的参数,一个类可以有多个构造函数(重载)不能定义构造函数的类型(返回类型),也不能使用void。构造函数是为了保证对象的每个数据成员都被正确初始化;如果程序中未声明,则系统自动产出一个默认构造函数;构造函数和new运算符 析构函数和delete函数。创建类类型的新对象,系统会自动调用构造函数;构造函数被声明为私有有特殊的用途。构造函数是特殊的成员函数;函数名和类名完全相同;
2024-04-24 20:18:31
163
原创 C++类与对象学习笔记(三)
从作用域的角度来看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类的作用域使用该类名时,需要加名字限定;类也可以定义在函数体内,这样的类被称为局部类(local class)。外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,并且同时可以对用户隐藏该底层实现。嵌套类的成员函数对外围类的成员没有访问权限,反之亦然;嵌套类中的成员函数可以在他的类体外定义;每个类都定义了自己的作用域成为类作用域。局部类的成员函数必须被定义在类体中;类作用域中说明的标识符只在类中可见。
2024-03-28 20:10:30
337
原创 C++类与对象学习笔记(二)
在未指定访问权限的时的成员变量,class默认的时私有的,struct默认是公有的;内联函数仅仅只是给编译器一个提示而已,如果函数中有switch for,编译器不会以内联函数来解析;使用this指针保证了每个对象可以拥有不同的数据成员,但处理这些成员的代码可以被所有对象共享;成员函数有一个隐含的附加形参,即指向该对象的指针,整个隐含的形参叫做this的指针;原理:编译的时候将代码直接嵌入到调用的地方,从而减少了函数调用的开销;成员函数是每个类所有对象公有只读的;成员函数都隐藏了自身指针的参数;
2024-03-27 20:00:19
288
1
原创 类和对象的学习笔记
封装是一项将低层次的元素组合起来形成新的,高层次的实体的技术。函数是封装的一种形式:函数所执行的细节行为被封装在函数整个更大的实体中。同样的类也是一个封装的实体:它所代表若干成员的聚集,设计良好的类隐藏了类实现的细节。类设计者必须关心类是如何实现的,但类的使用者不必了解这些细节。公有成员(外部接口)//在关键字public后面声明,他们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数;//在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问;
2024-03-26 20:29:29
136
原创 结构体内存对齐
其他成员对齐值min(sizeof(member),#pragma pack 所指定的值)的整数倍。整个结构体也要对齐,机构体总大小对齐至各个成员中最大对齐数的整数倍;2.C,c++语言非常灵活,他允许你干涉“内存对齐”;1.编译器为每个“数据单元”安排在某个合适的位置上;第一个数据成员放在offset为0的位置;性能原因:在对齐的地址上访问数据块;
2024-03-26 20:04:11
252
原创 C++与C语言之间的区别
3.作用域不同,const定义的常变量的作用域为该作用域的范围;#define定义的常量作用域为它的定义点到程序结束,可以使用#undef取消;用const给字面常量起个名字(标识符),这个标识符就成为标识符常量:因为标识符常量的声明和使用形式很像变量,所以也称常变量;2.const 定义的常量在编译的时候分配内存;#define定义的常量在预编译的时候进行替换,不分配内存;定义常量还可以使用enum,尽可能使用enum const替换#define;#define定义的常量没有类型;
2024-03-25 20:14:57
361
原创 面向对象的程序设计
当定义了一个类以后,有需要定义另一个类,这个新类与原来的类相比只是增加或修改了部分属性和操作,这个时候可以用原来的类派生出新类,新类中只需描述自己所持有的属性和操作;通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象的内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作;一般类中定义的属性和服务,在特殊类中不改变其名字,但通过各自不同的实现后,可以具有不同的数据类型或具体不同的行为;封装是按照信息屏蔽的原则,把对象的属性和操作结合起在一起,构成一个独立的对象。抽象是人们认识事物的一种方法。
2024-03-14 19:54:17
364
原创 C++ 基础算法源码及解析
冒泡排序:void BubbleSorting(std::vector<int>& testdata){ int nSize = testdata.size(); if(nSize < = 1) return; int tmp,nex; for(int i = 0;i<nSize-1;i++) { nex = 0; for(int j = 1;j<(nSize - i);j
2024-03-14 18:59:24
546
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人