C++基本语法-----struct
2016-04-11 09:42
302 查看
struct
example
typedef struct MyType { int first; int second; string s; MyType() { first = 1; s = "asdfgh"; } ~MyType() { cout << "I was destroyed!"; } }MyType;
可以在结构体中声明int、double等数据类型,
MyType()相当于构造函数,即默认该结构体中的各成员变量的值,~MyType()是析构函数,在释放此内存空间时会执行该函数
example中遇到的问题
string类型的数据无法用cout直接输出会报
the error: no operator << matches these operands的错误,直接在头文件中增加
#include<string>即可,
参考链接:/article/9876114.html
delete 结构体时会卡住
释放内存的时候会根据初始化时的数据类型的大小来释放相应的内存空间,对于int、double等已有的数据类型,释放时也会释放相应的大小,而对于自定义的结构体,则需要根据new时的大小来判断其释放的内存空间的大小。
参考链接:/article/2069713.html
完整的代码如下
下面的代码因为是用new来初始化MyType,因此delete时不会卡死#include
#include
using namespace std; int main() { typedef struct MyType{ int first; int second; string s; MyType() { first = 1; s = "asdfgh"; } ~MyType() { cout << "I was destroyed!"; } }MyType; int x = 0; int y = 0; MyType *m = new MyType; cout << m->first << " " << m->s; cout << m->s; delete m; cout << endl; while (!getchar()); return 0; }
相关文章推荐
- C++进阶
- BMP文件结构读写操作
- [C++]C++对象的生存周期
- C++中的左值和右值
- Effective C++ Item 37 绝不又一次定义继承而来的缺省參数值
- 合并排序的分析
- C/C++程序编译流程
- C++构造函数
- C/C++程序编译流程(预处理->编译->汇编->链接)细讲
- Google C++命名规范
- C语言文件遍历
- C语言时间转换
- C语言函数返回类型为指针时的一些问题
- 利用C语言创建和使用DLL文件
- [温故而知新] 《深度探索c++对象模型》——构造、析构、拷贝的语义
- c++继承详解之一——继承的三种方式、派生类的对象模型
- C++中解析XML tinyXML2
- 大型分布式C++框架《二:大包处理过程》
- c语言基础<5>
- c++第二次作业