关于C++对象和对象指针

Crystal_Youth 2014-03-31 01:48:16
麻烦各位讲讲一下几种的区别
还有构造函数的调用问题
以及类没有定义构造函数的情况

PtrClass *a = new PtrClass;
PtrClass *b = new PtrClass();
PtrClass c;
PtrClass d();
...全文
240 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
__cc__ 2014-04-01
  • 打赏
  • 举报
回复
引用 4 楼 oYinGui1 的回复:
[quote=引用 1 楼 neustar1 的回复:] [quote=引用 楼主 homelife 的回复:] 麻烦各位讲讲一下几种的区别 还有构造函数的调用问题 以及类没有定义构造函数的情况 PtrClass *a = new PtrClass; PtrClass *b = new PtrClass(); PtrClass c; PtrClass d();
PtrClass *a = new PtrClass;/**这个是声明指针,然后new一个对象初始化,对象调用的是默认构造函数*/ PtrClass *b = new PtrClass();/**同上,默认构造函数调用时候可以不用写括号,只是为了编写方便,没啥意思*/ PtrClass c; /*定义一个对象,这个对象执行的是默认构造函数,使用这种方式定义对象,如果是默认构造函数,不要写括号。*/ PtrClass d();/**声明一个返回PtrClass对象的函数*/[/quote] PtrClass d(); 这样写是调用类的无参构造吧。。。[/quote] 这个是函数声明
Pump天天学习 2014-03-31
  • 打赏
  • 举报
回复
引用 4 楼 oYinGui1 的回复:
[quote=引用 1 楼 neustar1 的回复:] [quote=引用 楼主 homelife 的回复:] 麻烦各位讲讲一下几种的区别 还有构造函数的调用问题 以及类没有定义构造函数的情况 PtrClass *a = new PtrClass; PtrClass *b = new PtrClass(); PtrClass c; PtrClass d();
PtrClass *a = new PtrClass;/**这个是声明指针,然后new一个对象初始化,对象调用的是默认构造函数*/ PtrClass *b = new PtrClass();/**同上,默认构造函数调用时候可以不用写括号,只是为了编写方便,没啥意思*/ PtrClass c; /*定义一个对象,这个对象执行的是默认构造函数,使用这种方式定义对象,如果是默认构造函数,不要写括号。*/ PtrClass d();/**声明一个返回PtrClass对象的函数*/[/quote] PtrClass d(); 这样写是调用类的无参构造吧。。。[/quote] 编译器把它解释成函数
Morrisss_ 2014-03-31
  • 打赏
  • 举报
回复
引用 1 楼 neustar1 的回复:
[quote=引用 楼主 homelife 的回复:] 麻烦各位讲讲一下几种的区别 还有构造函数的调用问题 以及类没有定义构造函数的情况 PtrClass *a = new PtrClass; PtrClass *b = new PtrClass(); PtrClass c; PtrClass d();
PtrClass *a = new PtrClass;/**这个是声明指针,然后new一个对象初始化,对象调用的是默认构造函数*/ PtrClass *b = new PtrClass();/**同上,默认构造函数调用时候可以不用写括号,只是为了编写方便,没啥意思*/ PtrClass c; /*定义一个对象,这个对象执行的是默认构造函数,使用这种方式定义对象,如果是默认构造函数,不要写括号。*/ PtrClass d();/**声明一个返回PtrClass对象的函数*/[/quote] PtrClass d(); 这样写是调用类的无参构造吧。。。
Crystal_Youth 2014-03-31
  • 打赏
  • 举报
回复
有点明白了,谢谢……
__cc__ 2014-03-31
  • 打赏
  • 举报
回复
引用 楼主 homelife 的回复:
麻烦各位讲讲一下几种的区别 还有构造函数的调用问题 以及类没有定义构造函数的情况 PtrClass *a = new PtrClass; PtrClass *b = new PtrClass(); PtrClass c; PtrClass d();
定义的类没有构造函数的时候,编译器会生成一个默认构造函数,拷贝构造函数,=运算符重载函数。当然你代码中用到才会。 如果你定义任何一个构造函数,默认构造函数不会生成,需要自己写。
__cc__ 2014-03-31
  • 打赏
  • 举报
回复
引用 楼主 homelife 的回复:
麻烦各位讲讲一下几种的区别 还有构造函数的调用问题 以及类没有定义构造函数的情况 PtrClass *a = new PtrClass; PtrClass *b = new PtrClass(); PtrClass c; PtrClass d();
PtrClass *a = new PtrClass;/**这个是声明指针,然后new一个对象初始化,对象调用的是默认构造函数*/ PtrClass *b = new PtrClass();/**同上,默认构造函数调用时候可以不用写括号,只是为了编写方便,没啥意思*/ PtrClass c; /*定义一个对象,这个对象执行的是默认构造函数,使用这种方式定义对象,如果是默认构造函数,不要写括号。*/ PtrClass d();/**声明一个返回PtrClass对象的函数*/

65,209

社区成员

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

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