C++初始化和赋值区别解析
C++编程语言中的初始化在实际编程中应用频繁,并且作用比较大。我们在这里主要为大家讲解了C++初始化和赋值之间的区别。可以让大家从中对这两种功能应用有一个详细的了解,方便将来的应用。
对于基本数据类型差别不大:
比如:
- int a = 12; // initialization, copy 0X000C to a
- a = 12; // assignment, copy 0X000C to a
但是对用户自定义的数据类型比如String 的C++初始化和赋值就差别很大:
- class String {
- public:
- String( const char *init ); // intentionally not explicit!
- ~String();
- String( const String &that );
- String &operator =( const String &that );
- String &operator =( const char *str );
- void swap( String &that );
- friend const String // concatenate
- operator +( const String &, const String & );
- friend bool operator <( const String &, const String & );
- //...
- private:
- String( const char *, const char * ); // computational
- char *s_;
- };
初始化的构造过程比较简单:先分配一个足够大的空间然后填充上数据:
- String::String( const char *init ) {
- if( !init ) init = "";
- s_ = new char[ strlen(init)+1 ];
- strcpy( s_, init );
- }
析构过程更简单:
- String::~String() { delete [] s_; }
但是如果赋值操作就复杂多了:
- String &String::operator =( const char *str ) {
- if( !str ) str = "";
- char *tmp = strcpy( new char[ strlen(str)+1 ], str );
- delete [] s_;
- s_ = tmp;
- return *this;
- }
以上就是对C++初始化和赋值之间区别的介绍。
【编辑推荐】
- C++标准输入输出应用技巧解析
- 几种不同C++继承方式简介
- C++内存使用机制基本概念详解
- 我国IPTV研究目全球领先
- C++ Bost库基本内容概述
版权声明:
作者:后浪云
链接:https://www.idc.net/help/402758/
文章版权归作者所有,未经允许请勿转载。
THE END