社区
C++ 语言
帖子详情
基类和派生类的大小问题
Lovegarfield
2009-02-23 02:32:02
1,是不是派生类一定比基类要大?为什么?
2,static能不能修饰构造和析构函数?(我试的是不可以)
...全文
471
8
打赏
收藏
基类和派生类的大小问题
1,是不是派生类一定比基类要大?为什么? 2,static能不能修饰构造和析构函数?(我试的是不可以)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tangshuiling
2009-02-23
打赏
举报
回复
[Quote=引用 4 楼 Lovegarfield 的回复:]
我还有一个问题:
如果把一个类A的构造函数全部声明为private,那么类A能不能被实例化?我觉得是可以的,我声明一个friend函数调用我的构造函数好了,这不就实例化了吗?
[/Quote]
完全可以,但破坏了类的封装特性!
zhkefa
2009-02-23
打赏
举报
回复
[Quote=引用 4 楼 Lovegarfield 的回复:]
我还有一个问题:
如果把一个类A的构造函数全部声明为private,那么类A能不能被实例化?我觉得是可以的,我声明一个friend函数调用我的构造函数好了,这不就实例化了吗?
[/Quote]
可以,单例模式就是可以这样实现,,
herman~~
2009-02-23
打赏
举报
回复
1 可以一样大
2 static 修饰构造和析构函数都没意义。static 函数可以用于修饰类成员函数,并类同于全局函数,不需要实例化类就可以直接调用 A::StaFunc();
passionboy03
2009-02-23
打赏
举报
回复
up
[Quote=引用 1 楼 Dinelgua 的回复:]
1,是不是派生类一定比基类要大?为什么?
一定不小于父类对象。因为子类对象必然包含父类对象 见C++对象模型
即使在父类中是私有的,在子类中也会划分对应空间来存储 只是子类没有房问权限
2,static能不能修饰构造和析构函数?(我试的是不可以)
不能,静态成员函数 不能够访问类的非静态成员
既然构造和析够函数是程序运行期构造对象呢,那么一定会访问非静态成员(静态成员在编译器就决定了,不需要运行时构造…
[/Quote]
Lovegarfield
2009-02-23
打赏
举报
回复
我还有一个问题:
如果把一个类A的构造函数全部声明为private,那么类A能不能被实例化?我觉得是可以的,我声明一个friend函数调用我的构造函数好了,这不就实例化了吗?
waizqfor
2009-02-23
打赏
举报
回复
[Quote=引用楼主 Lovegarfield 的帖子:]
1,是不是派生类一定比基类要大?为什么?
2,static能不能修饰构造和析构函数?(我试的是不可以)
[/Quote]
1,是不是派生类一定比基类要大?为什么?
应该是大于等于基类 因为派生类 继承了基类的成员 而自己也有可能有自己类的成员
如果是私有类型的 那么在子类中 也会有保存 所以要大于等于基类
2,static能不能修饰构造和析构函数?
不能
static是静态成员 而构造和析构函数是非静态的成员函数
cadhy
2009-02-23
打赏
举报
回复
高手问了高问题,我是学习的
Dinelgua
2009-02-23
打赏
举报
回复
1,是不是派生类一定比基类要大?为什么?
一定不小于父类对象。因为子类对象必然包含父类对象 见C++对象模型
即使在父类中是私有的,在子类中也会划分对应空间来存储 只是子类没有房问权限
2,static能不能修饰构造和析构函数?(我试的是不可以)
不能,静态成员函数 不能够访问类的非静态成员
既然构造和析够函数是程序运行期构造对象呢,那么一定会访问非静态成员(静态成员在编译器就决定了,不需要运行时构造)
所以不能用static修饰
【C++】虚拟
基类
(virtual Base Class)详解:为什么要有虚拟
基类
?
虚拟
基类
是C++为处理多重继承中的菱形继承
问题
而引入的概念,防止
基类
副本的重复。通过在继承声明中使用`virtual`关键字,可以确保所有
派生类
共享同一
基类
实例,减少内存浪费和提高代码一致性。然而,虚拟继承可能导致构造和析构时的性能损失,以及增加对象
大小
,因此在设计时需要权衡使用。
条款3:不要对数组使用多态,例:不用
基类
指针删除
派生类
对象数组
本文深入探讨了C++中多态类对象在数组中的使用误区,特别是在delete[]和函数遍历时的
问题
,分析了
基类
与
派生类
对象
大小
不一致导致的指针偏移错误,并提供了解决方案。
017--C++继承中虚
基类
(最优)
本文探讨了C++中多级多重继承导致的内存
问题
,引入虚
基类
作为解决方案。虚拟
基类
通过使用`virtual`关键字,尽管会增加
派生类
对象的内存
大小
,但能避免重复的
基类
实例。通过实例展示了虚
基类
如何影响内存布局,并对比了使用和不使用`virtual`关键字时的内存占用情况。
More Effective C++ 条款3
本文主要讨论了C++中多态性数组的
问题
。C++允许通过
基类
指针和引用来操作
派生类
数组,但这样的代码无法正常运行。编译器会按
基类
类型确定数组元素
大小
,导致遍历和删除数组时出现
问题
,语言规范表明通过
基类
指针删除含
派生类
对象的数组结果不确定。
你了解c++中的关键字virtual吗?
本文详细介绍了C++中的虚函数和虚
基类
概念。虚函数用于实现多态,通过
基类
指针调用
派生类
方法。虚
基类
避免了多重继承时的
基类
重复继承
问题
。文章还探讨了虚函数表、对象
大小
及纯虚函数的使用。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章