结构体和类的初始化
来源:互联网 发布:淘宝男装批发厂家直批 编辑:程序博客网 时间:2024/05/20 05:09
一. 结构体的初始化
1、若类和结构体所有数据成员均为public型,可采取如下带花括号形式进行初始化。
注意:
①不论值的个数多少,都必须使用花括号定界
②未指定值的数据成员编译器会自动初始化为默认值
③这种初始化对象方式,要求所有数据成员必须为public型
④这种初始化对象方式,要求类中不能编写任何构造函数
struct Test{ inta; stringb;}; Test t={1, 2}; //只有这一种初始化方式,使用花括号
2、若结构体中含有自定义的构造函数,或者含有private和protected,只可以使用自己定义的构造函数(由于在C++中结构体和类的本质是一样的,只要自己声明了结构体,就没有了默认构造函数,这一点和java中很不同)
struct Test{private: int a; string b;public: Test(int aa, string bb){ a=aa; b=bb; } };//可以使用的构造方式Test test(1,"str");Test test = Test(1,"str");Test * test = new Test(1, "str");//如果只有一个参数:Test test=1;
二. 类的初始化
一.类的初始化和结构体的基本相同,只是没有花括号的构造方式
class Test{private: int a; string b;public: Test(int aa, string bb){ a=aa; b=bb; } };//可以使用的构造方式Test test(1,"str");Test test = Test(1,"str");Test * test = new Test(1, "str");//如果只有一个参数:Test test=1;
二.下面介绍一下使用new和其他构造方式的区别
下面是参考别人总结的一些关于new创建类对象特点:
new创建类对象需要指针接收,一处初始化,多处使用
new创建类对象使用完需delete销毁
new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间
new对象指针用途广泛,比如作为函数返回值、函数参数等
频繁调用场合并不适合new,就像new申请和释放内存一样
1、new创建类对象例子:
CTest* pTest = new CTest();
delete pTest;
pTest用来接收类对象指针。
不用new,直接使用类定义申明:
CTest mTest;
此种创建方式,使用完后不需要手动释放,该类析构函数会自动执行。而new申请的对象,
则只有调用到delete时再会执行析构函数,如果程序退出而没有执行delete则会造成内存泄漏。
2、只定义类指针
这跟不用new申明对象有很大区别,类指针可以先行定义,但类指针只是个通用指针,在new之前并为该类对象分配任何内存空间。比如:
CTest* pTest = NULL;
但使用普通方式创建的类对象,在创建之初就已经分配了内存空间。而类指针,如果未经过对象初始化,则不需要delete释放。
Ps、我在构造一个链表,使用了while循环,由于使用的非new的构造方式而且声明为局部变量,每次都会自动回收,所以就会构造错误:
int i=0;
while(i<2){
Test p("1");
cout << &p <<endl;
i++;
}
解决方式,将p的作用于提高一层,声明的这部分的全局变量,或者使用new来声明对象。
- 结构体和类的初始化
- C++结构体实例和类实例的初始化
- C++结构体实例和类实例的初始化
- C++结构体实例和类实例的初始化
- C++结构体实例和类实例的初始化
- C++结构体实例和类实例的初始化
- C++结构体实例和类实例的初始化
- C++ 结构体实例和类实例的初始化
- 结构体变量的初始化和赋值
- swift 类和结构的初始化方法
- 关于结构体和类初始化
- 结构体的初始化
- 结构体的初始化
- 结构体的初始化
- 结构体的初始化
- 结构体的初始化
- 结构体的初始化
- 结构体的初始化
- MYSQL的常用命令和增删改查语句和数据类型
- Uboot中start.S源码的指令级的详尽解析
- oracle 之 内存—鞭辟近里(三)
- 命令行快捷键
- C# 使窗体控件接受拖拽数据
- 结构体和类的初始化
- 13-7-13 聊天窗口的绘制与实现
- 测试管理工具
- RequestDispatcher的使用
- Calculation Functions--Mathematical Functions--@ABS 绝对值
- oracle 之 内存—鞭辟近里(四)
- Android环境搭建
- 《编程珠玑》读书笔记(一)
- 《编程珠玑》读书笔记(三)