C++ 初始化和赋值的不同
2005-04-04 13:09
344 查看
c++中初始化和赋值操作差别是很大的。对于基本数据类型差别不大:比如:
网摘
近日心情 爱吧
CtrlC 源代码搜索引擎
图片转化为字符
百家姓,姓名查询
唐诗、宋词、元曲 搜索引擎
小叮咚首页 讨论
int a = 12; // initialization, copy 0X000C to a a = 12; // assignment, copy 0X000C to a但是对用户自定义的数据类型比如String 初始化和赋值就差别很大:
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++ Common Knowledge: Assignment and Initialization Are Different 其他机器人聊天
![](http://www.domolo.com/dot_focus.gif)
![](http://www.domolo.com/dot_focus.gif)
![](http://www.domolo.com/dot_focus.gif)
![](http://www.domolo.com/dot_focus.gif)
![](http://www.domolo.com/dot_focus.gif)
![](http://www.domolo.com/dot_focus.gif)
![](http://www.domolo.com/dot_focus.gif)
相关文章推荐
- ”C++中赋值和初始化不同“实例说明---欢迎大家发表自己的看法
- C++构造函数的初始化列表和函数体内赋值有什么不同?
- C++中string类型的初始化与赋值
- C++中的拷贝构造函数和拷贝赋值操作符+const成员变量初始化(5)---《Effective C++》
- 从零开始学C++之构造函数与析构函数(一):构造函数、析构函数、赋值与初始化、explicit关键字
- C++学习之继承篇(is a:用子类对象给基类对象赋值或初始化)
- c++基础:普通变量初始化与类内初始值初始化的不同
- C++不同编译单元内定义的非局部静态对象的初始化顺序
- c++中初始化和赋值的区别
- C++中类对象的初始化与赋值的区别
- C++字符数组(定义和初始化、赋值和引用)
- 初始化与赋值是不同的操作
- 定义、声明、初始化、赋值 小记(C++)
- C++中对string对象的初始化及赋值方式总结
- c++赋值和初始化
- c++基础:普通变量初始化与类内初始值初始化的不同
- c++基础:普通变量初始化与类内初始值初始化的不同
- C++使用未初始化的指针和赋值为0的指针
- C/C++基础问答(1):通过初始化列表和构造函数内赋值初始化成员变量的区别
- 关于C/C++中switch语句case中变量不能初始化赋值的问题