C++学习笔记之类和对象

本文详细探讨了C++中的类和对象,包括结构体在C和C++的区别,类的定义,构造函数,析构函数,初始化列表,explict关键字,赋值运算符重载,const成员函数,取地址运算符重载,静态成员和友元机制。特别强调了成员函数的存储位置,构造函数的作用,以及友元如何打破封装性。同时,还介绍了内部类的特性及其与外部类的关系。
摘要由CSDN通过智能技术生成

结构体在C和C++的不同

1.在c++中,用结构体定义变量不需要加struct,而c中不行。

2.在C++中,可以定义空结构体,大小为1,而C中不行。

3.在C++中,可以在结构体声明中声明甚至实现函数,在C中只能放函数指针。

4.在C++中,成员函数直接可以访问本结构的成员变量而无需传入,在C中,函数和结构并无直接关联。

***成员函数不影响结构体的大小

因为成员函数是放在公共区域的,只是在这个结构体域中而已。 

类是一个特殊的结构体,只需要把上述结构体中的struct改成class,再加上public即可。

访问限定符:

public:正常访问       private:只能在类内部访问         protected:目前来说和private差别不大,但是主要差别体现在多态,继承的学习阶段 。

tip1:访问限定符只在编译阶段生效,编译好后,在运行阶段并没有限定。

tip2:结构体其实也能使用访问限定符,只是一般不去使用,因为它是用来兼容C结构体的。

tip3:结构体中默认是public,而类中默认是private。

注意点:

1.首先出现无穷递归/无穷调用的情况是在拷贝构造时候,拷贝构造的参数只有一个且必须使用引用传参,如果不使用引用传参则会出现无穷递归。

2.默认拷贝构造是浅拷贝,自己写的拷贝构造是深拷贝,若在牵扯到动态内存分配时候,自己不写拷贝构造函数,则会出现程序崩溃的情况,因为第二次析构的时候会引发错误。

3.在赋值运算符重载的时候bool operator=(const Date &d)假设是一个date类,那么我们可以理解为对=的赋值运算符重载,使用bool当然也可以

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值