关于C++的几个简单问题

shotgun79 2003-10-15 10:04:37
1、如果将一个对象赋值给另一个对象,是数据成员内容的简单复制,还是为同一组数据成员命名另一个指针。
2、在创建对象时如使用如下方法(类名 对象名),是否一定要写在主程序的开始。
在引用对象成员时什么时候用“->”,什么时候用“.”
3、关于派生类构造函数和基类构造函数的关系。
如派生类不使用基类的构造函数,那么基类的构造函数在创建派生类对象时是否会被调用、激活?
派生类是否只有通过基类的构造函数才能访问基类的成员数据(当然是在基类中被定义为私有的)?
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fifo333 2003-10-16
  • 打赏
  • 举报
回复
1、如果没有重载=操作符或者拷贝构造函数(使用函数调用操作符()时),那就是逐一复制成员。你可以重载=或定义拷贝构造函数改变缺省行为。
2、对象的指针使用->,实际对象包括引用使用.。
3、先执行基类构造函数,再执行派生类构造函数;析构时相反。派生类调用基类私有成员因该是有办法的,不过是间接的方式,具体的我不清楚了。

langzi8818 2003-10-15
  • 打赏
  • 举报
回复
2.对象可以在使用前定义就可以了,->指针用的,。是非指针用的
3。不明确调用基类的构造函数的时候,会自动调用基类的默认构造函数。这是必须调用的。
在public继承中,基类的非private成员是可以被子类直接用的!不是你说的要通过基类的构造函数调用,可以直接在子类中调用
Wolf0403 2003-10-15
  • 打赏
  • 举报
回复
如果赋值的是没有重载 operator= 的 struct/class 或者任意标准类型,结果和通过 memcpy 赋值的结果相同。

在创建对象之前必须出现该类/结构的声明。
从指针引用成员使用 ->,从实例引用成员使用 .
-> 就是 (* ). 的简写方法。

基类默认构造函数(无参)会被自动调用。然而,如果基类、派生类有接受相同参数的构造函数,基类仍然只会被调用默认的构造函数而不是对应的带参数的构造函数。
标准写法是:
class Derived : public Base
{
public:
Derived():Base(){} // 如果有对应的参数,应该传递参数给相应的基类构造函数。
};
不显式调用基类的构造函数无法初始化基类的私有数据。
daizh 说的顺序是正确的
showgood21 2003-10-15
  • 打赏
  • 举报
回复
2.创建对象不一定要写在主程序的开始,可以在使用对象前再创建
3.无论派生类使用基类的构造函数与否,生成派生类对象时总是先调用基类的构造函数,之后
才是派生类构造函数
daizh 2003-10-15
  • 打赏
  • 举报
回复
我简单的回答一下:
1、如果你的对象中没有指向资源(new出的空间),而直接将一个对象赋值给另一个对象,它只是将数据成员内容简单复制另一个对象。如果对象中含资源(new之类)你就不能这样赋值了,必须重载运算符“=”;
2、创建对象时如使用如下方法(类名 对象名),那么你就要在它的前面有该类的声明。如果是指针对象就用->,其他用“.”
3、派生类在生成对象是,它要调用基类的构造函数,然后是它本身的构造函数,析构时相反。

64,281

社区成员

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

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