C++Primer Plus学习笔记

本文探讨C++中类的使用,包括类的构造、操作符重载、静态常量声明、动态内存分配及类继承等内容。文章还介绍了如何通过成员函数实现隐式操作,并讨论了new和delete的配对使用原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

11章 使用类

<climits><ctime>clock time <cctype><string><cstdlib>rand srand

void show() const;

默认情况下,将一个对象赋给另一个对象时,C++将把原对象的每个数据成员的内容复制到目标对象的相应的数据成员中。 

静态常量static const int len=30这种技术只能声明值为整数或枚举的静态常量

操作符重载operator op(argument-list),不能重载的操作符:

sizeof   .       .*       ::     ?:       typeid      const_cast    dynamic_cast     reinterpret_cast     static_cast      只能通过成员函数重载的操作符:

=        ()            []           ->  友元friend operator op(argument-list)

关闭自定义类的自动类型转换explicit Stonewt(double lbs);

转换函数operator typename()   operator int() const;

第12章 类和动态内存分配

隐式成员函数

默认构造函数,复制构造函数,赋值操作符,默认析构函数,地址操作符

new和delete必须兼容new对应于delete,new[]对应于delete[];

delete可用于空指针

第13章 类继承

不可以将基类对象和地址赋值给派生类对象和引用

virtual: 如果没有virtual,程序将根据引用类型或指针类型选择方法;如果使用了virtual,程序将根据引用或指针指向的对象的类型来选择方法。

为基类声明一个虚拟析构函数也是一种惯例

要在派生类中重新定义基类方法,则将它设置为虚拟方法;否则,设置为非虚拟方法

处理虚拟函数的方法:给每个对象添加一个隐藏成员保存一个指向函数地址数组的指针(虚拟函数表virtual function table vtbl)

重新定义继承的方法并不是重载。如果在派生类中重新定义函数,将不是使用相同的函数特征标覆盖基类函数,而是隐藏同名的基类方法,不管参数特征表如何。这引出了两条规则:

第一,如果重新定义继承的方法,应确保与原来的原型完全相同,但如果返回类型是基类引用或指针,则可修改为派生类的引用或指针(并不是所用编译器能识别,且只适用于返回值,而不适用于参数)。

第二,如果基类声明被重载了,则应在派生类中重新定义所有的基类版本。如果只重新定义一个,则其他的奖杯隐藏,派生类对象将无法使用它们。

纯虚函数结尾处=0;

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值