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++初始化和賦值之間區別的介紹。