基类和派生类的大小问题

Lovegarfield 2009-02-23 02:32:02
1,是不是派生类一定比基类要大?为什么?

2,static能不能修饰构造和析构函数?(我试的是不可以)
...全文
471 8 打赏 收藏 转发到动态 举报
写回复
用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修饰

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧