一、学习的知识点
作业
- malloc开辟的空间在堆区,new开辟的空间在自由存储区,存满后存堆区
- 引用是给变量起别名,定义引用要初始化;
- 指针变量用来保存地址,定义时不初始化,是野指针,初始化为NULL,是空指针。
- 同一个引用名不能给其他变量起别名,指针可以指向其他变量
- 引用占的内存大小与指向的变量有关;指针占4字节
- 指针和引用都作为函数参数的时候,都可以改变实参的值;指针通过地址改变值,引用是直接改变
- 引用比指针更安全,更省内存
- 空指针:NULL
- 野指针:指向一个非法的或者已经销毁的内存的指针,如free、delete
- 内联函数 :inline 函数声明;
面向对象的编程思想
POP Process Oritented Programming:面向过程的程序设计;OOP Object Oritented Programming:面向对象的程序设计
OOP:对象=(算法+数据结构) 程序=对象+对象+…
类与对象
类是对象共有属性行为的概括,对象是类的具体实现
类
class 类名{
public: //访问说明符,若无说明则默认为private
//构造函数
Clabel();//默认的构造函数,没有返回值,也没有参数 作用:初始化数据
Clabel(int x,int y,int w,int h,char *pcontent);//普通构造,带有两个及以上的参数
explicit Clabel(char *pcontent);//转换构造,将参数类型自动转换成类类型处理;只有一个参数,并且参数类型不是这个类类型 explicit 放弃自动转换
Clabel(Clabel &lab); //拷贝构造
void copy(Clabel lab);
protected:
保护数据成员和成员函数;
private: //私有的 用户不感兴趣的
int startX;
int startY;
int width;
int height;
char content[20];
};
//成员函数的声明
void Clabel::show1() //返回类型 类名::成员函数名(参数说明)
{
Clabel::Gotoxy(startX,startY);
cout<<content;
}
Clabel::Clabel()
{
cout<<"默认构造"<<endl;
//初始化
startX=10;
startY=5;
width=20;
height=2;
strcpy(content,"用户名");
}
Clabel::Clabel(int x,int y,int w,int h,char *pcontent){}
Clabel::Clabel(Clabel &lab){} //类对象作为函数参数时,会创建类对象,一定会执行拷贝构造,拷贝构造一般用引用类型做函数参数
//
int main()
{
//类对象在创建时会走构造函数,没写构造时会自动生成默认构造执行
Clabel lab(36,8,20,2,"点菜系统");
Clabel *pnew=new Clabel(23,11,20,2,"用户名");
Clabel p;
p=lab; //两个类对象可以直接赋值,会走默认的拷贝构造
delete p; //new创建的对象要用delete释放,释放时走析构函数。
//普通类对象在函数结束时走析构函数
return 0;
}
- 通常在头文件定义类,类中存放数据成员和成员函数的声明;源文件存放函数的定义
- 类的数据成员是每个对象私有的,成员函数是共用的;类对象定义时占用的空间只与数据成员的类型有关
- 拷贝构造函数:浅复制:将对象成员的值进行简单复制 ; 深复制:在浅复制基础上,对指针型数据成员开辟空间,然后复制对应的值
- 析构函数不能重载,在析构函数对类对象中开辟的空间释放
二、上课没有听懂或者没有理解的地方
无
三、当天学习的收获
初步了解了面向对象的程序设计思想
四、作业的思路、不会的地方
参考之前的
五、其他需要反馈的问题
无
六、心得体会
多写程序掌握新知识
本文深入讲解面向对象编程(OOP)的基础概念,包括类与对象、构造函数、引用与指针的区别,以及内存管理等核心知识点。同时,文章还探讨了内联函数、面向过程与面向对象的编程思想差异,帮助读者理解OOP的基本原理。
1012

被折叠的 条评论
为什么被折叠?



