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++初始化和赋值之间区别的介绍。
【编辑推荐】