社区
C++ 语言
帖子详情
结构和类的初始化问题
caoyiwen19830726
2009-03-04 03:34:38
假设我定义了一个名字为MyStruct的结构体,以及一个名字为MyClass的类。则在初始化时候,是不是应该用如下语句:
MyStruct *pMyStruct = new MyStruct;
MyClass myclass = new MyClass();
我要问的就是可以用 MyStruct pMyStruct = new MyStruct;
MyClass *myclass = new MyClass();
这样的语句来初始化吗?如果不行,原因是什么?谢谢!
...全文
90
8
打赏
收藏
结构和类的初始化问题
假设我定义了一个名字为MyStruct的结构体,以及一个名字为MyClass的类。则在初始化时候,是不是应该用如下语句: MyStruct *pMyStruct = new MyStruct; MyClass myclass = new MyClass(); 我要问的就是可以用 MyStruct pMyStruct = new MyStruct; MyClass *myclass = new MyClass(); 这样的语句来初始化吗?如果不行,原因是什么?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jakqigle
2009-03-04
打赏
举报
回复
new 返回的是指针,内存分配失败时返回NULL
foreverglcz
2009-03-04
打赏
举报
回复
[Quote=引用 6 楼 ctan 的回复:]
new 操作符返回的是指针,
所以只能
MyStruct *pMyStruct = new MyStruct();
MyClass *pmyclass = new MyClass();
而不能
MyStruct mystruct = new MyStruct();
MyClass myclass = new MyClass();
[/Quote]
UP,应该用指针来接收new的返回值。
ctan
2009-03-04
打赏
举报
回复
new 操作符返回的是指针,
所以只能
MyStruct *pMyStruct = new MyStruct();
MyClass *pmyclass = new MyClass();
而不能
MyStruct mystruct = new MyStruct();
MyClass myclass = new MyClass();
csjtxy
2009-03-04
打赏
举报
回复
1楼不错
biosli
2009-03-04
打赏
举报
回复
[Quote=引用楼主 caoyiwen19830726 的帖子:]
假设我定义了一个名字为MyStruct的结构体,以及一个名字为MyClass的类。则在初始化时候,是不是应该用如下语句:
MyStruct *pMyStruct = new MyStruct;
MyClass myclass = new MyClass();
我要问的就是可以用 MyStruct pMyStruct = new MyStruct;
MyClass *myclass = new MyClass();
这样的语句来初始化吗?如果不行,原因是什么?谢谢!
[/Quote]
MyClass myclass = new MyClass();
MyStruct pMyStruct = new MyStruct;
C++下:
你这两种方法都编译不过去。
new函数执行完了是返回一个指针。
你那一个对象过去和一个指针赋值显然是有错误的。
当然,如果你重载了等号操作符另当别论。
xuruichen
2009-03-04
打赏
举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
MyStruct pMyStruct = new MyStruct;
这句是错误的
这不是C++的语法,更象C#的语法
原因是new返回的是MyStruct*
不能用于初始化MyStruct
对于类也一样
[/Quote]
没用过C#
OenAuth.Net
2009-03-04
打赏
举报
回复
new 的返回类型就是个指针,所以不能。呵呵
arong1234
2009-03-04
打赏
举报
回复
MyStruct pMyStruct = new MyStruct;
这句是错误的
这不是C++的语法,更象C#的语法
原因是new返回的是MyStruct*
不能用于初始化MyStruct
对于类也一样
【C++】
初始化
列表是什么?
初始化
列表有什么作用?我们必须要使用
初始化
列表吗?
在C++中,优先使用
初始化
列表来
初始化
自定义
类
型的成员变量,因为无论如何,成员变量总会在
初始化
列表中先被
初始化
。每个成员变量在列表中只能出现一次,意味着
初始化
不能重复。成员变量的声明顺序决定了其
初始化
顺序,而与
初始化
列表的顺序无关。 对于
类
成员中的引用,必须通过
初始化
列表进行赋值,因其在定义时必须初始并且不可更改。直接赋值会导致引用对象多次修改,可能引发未定义行为,因此使用
初始化
列表能确保在对象创建时正确
初始化
引用对象,提高代码可读性和维护性。 关于初始值,
初始化
列表的优先级最高,其次是成员变量声明时的
记Java对象
初始化
产生的
问题
问题
描述 在用Stack(栈,栈是一种数据
类
型,详细介绍见下方链接背包、队列和栈_qq_45666842的博客-CSDN博客)
类
创建一个字符串的容器时,
C++中的默认
初始化
引言 c++中涉及到内置
类
型、复合
类
型、STL对象、
结构
体、
类
等对象,
初始化
也有很多
类
型:默认
初始化
、拷贝
初始化
、直接
初始化
。 默认
初始化
是指未指定变量具体值时,变量自动被
初始化
。默认
初始化
存在很多差异,分
类
总结对于熟练掌握及应用大有裨益! 1.内置
类
型 默认初始值由定义的位置决定,若不在任何块内,
初始化
为0,否则未定义,或者说是拥有一个不确定的值。 #include<iostre...
C++学习笔记12:
类
成员
初始化
等
问题
类
中嵌套
结构
或
类
声明,
类
的成员
初始化
列表,
类
成员的
类
内
初始化
,避免复制构造函数和执行深度复制的 赋值运算符被调用的方法
【C++篇8】为什么还要有 new 和 delete?
类
和
结构
体区别?被delete 或 free 释放的内存会直接返还给操作系统么?什么时候需要析构函数?常函数内能否修改静态成员?
初始化
参数列表特点
因为c语言没有对象,而c++是面向对象语言,c++中
类
或
结构
体创建的对象在释放时需要调用析构函数去释放对象内部的指针指向的堆区内存,在创建对象时需要调用构造函数给成员变量赋值。而 malloc 不会调用构造函数,free 不会调用析构函数。new会先调用malloc申请内存,然后再调用构造函数赋值(
初始化
是
初始化
参数列表),delete 会先调用析构函数释放对象内的成员变量指向的堆区内存,再调用free。(这里要注意为啥不是先调用free再调用析构)。delete 在释放数组时要注意加中括号。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章