C++基础7

简述虚指针

虚表指针在类对象中,每个同类对象中都有个一个vptr,指向内存中的vtable,所有同类对象,共享一个vtable,但是每个对象都自带一个vptr指向这个vtable,否则调用虚函数的时候会找不到正确的函数入口,虚表指针是对象的第一个数据成员。
虚表是属于类的,而不是属于某个具体的对象,一个类只需要一个虚表即可。同一个类的所有对象都使用同一个虚表。

为了指定对象的虚表,对象内部包含一个虚表的指针,来指向自己所使用的虚表。为了让每个包含虚表的类的对象都拥有一个虚表指针,编译器在类中添加了一个指针,*__vptr,用来指向虚表。这样,当类的对象在创建时便拥有了这个指针,且这个指针的值会自动被设置为指向类的虚表。

拷贝构造函数的特点

拷贝构造函数是C++中的特殊成员函数,用于创建一个新对象并将其初始化为另一个同类型对象的副本。以下是拷贝构造函数的特点:

  1. 函数签名:拷贝构造函数的函数名与类名相同,参数为对同类型对象的引用,而且一般用const修饰以限制引用权限,防止误操作修改拷贝源的属性。

  2. 默认实现:如果没有显式定义拷贝构造函数,编译器会提供一个默认的拷贝构造函数,执行逐个成员变量的浅拷贝。

  3. 深拷贝与浅拷贝:

    • 浅拷贝:默认拷贝构造函数执行的是浅拷贝,即复制指针而不是指针所指向的内容。
    • 深拷贝:自定义拷贝构造函数可以实现深拷贝,复制指针所指向的内容。
  4. 对象初始化:拷贝构造函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值