C++ class学习笔记

C++ class学习笔记

1、

权限:公共都可以访问,保护只有类内和子类内可以访问,私有只有类内可以访问。(class默认私有,struct默认公共)

2、

构造函数、析构函数:系统自动调用看(构造实例化时调用,析构对象销毁前调用),不写则默认调用空实现。构造函数语法:类名(){};析构函数:~类名(){}。

3、

值传递本质是拷贝。

4、

浅拷贝带来的问题是new内存重复释放,深拷贝(重新new)解决。

5、

类先构造类对象,再构造自身,析构顺序相反。

6、

静态成员函数可以通过累对象调用,也可以同类::函数名 调用。不可以访问非静态成员变量。静态成员只能在类外定义,且只能定义一次。

7、

int func()函数返回一个拷贝构造对象,int& func()返回对象本身。

8、

常对象只能调用常函数(不能修改值和指针指向,但加关键字 mutable 可以修改)。

9、

运算符重载:前置递增返回引用,后置递增返回值(temp,原对象++),注意链式操作。

10、

继承:公有继承权限不变,保护继承全变为保护,私有继承全变为私有。(私有不可访问,但确实被继承)

11、

虚继承可以解决菱形继承的资源浪费问题,继承的是多个父类重复成员的vbptr(指针均指向虚基类的该成员vbtable)。

12、

父类虚函数基本不会被调用,均让子类重写。virtual int func( ) =0 为纯虚函数,而该父类为抽象类,无法实例化对象,只能被继承,而继承的子类若不重写虚函数则仍为抽象类。Base *p =new Son,父类指针可以调用子类对象成员。

13、

虚析构用于解决父类无法对子类对象释放干净的问题。纯虚析构必须要声明和实现,且该类属于抽象类。

14、

抽象类可以通过子类实例化对象:
Animal *aa= new Cat(“Tom”) ;
delete aa;
此时父类析构函数前需加virtual,否则会无法调用子类析构函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值