构造函数的一个小问题
来源:互联网 发布:网络游戏音乐视频 编辑:程序博客网 时间:2024/06/11 03:15
// 精简过的代码,两个构造函数如下:
simple_string::simple_string()
{
str=new char[1];
len=0;
str[0]=NULL;
}
simple_string::simple_string(int n)
{
len=n;
str=new char[len+1];
for(int i=0;i<n;i++) str[i]='0';
str[len]=NULL;
}
// 一个赋值操作符
simple_string& simple_string::operator =(char c)
{
len = 1;
delete[] str;
str = new char[2];
str[0] = c;
str[1] = 0;
return *this;
}
如果我这样调用:
simple_string s0 = 'a';
cout << endl << "s0 = "<< s0 << "|||" << endl;
打印出97个0, 在vc上调试发现调用的是simple_string::simple_string(int n)构造函数
如果这样调用:
simple_string s0;
s0 = 'a';
cout << endl << "s0 = "<< s0 << "|||" << endl;
则调用赋值操作,输出为 a
开始很纳闷,于是翻书补课,发现如果在定义时给变量赋初值,此时的赋值操作实际上是初始化操作,即调用构造函数而非赋值操作符(见C++ Primer 2.2.3)。
根据C语言定义,'a'为int类型,因此调用的是simple_string::simple_string(int n)构造函数。
- 构造函数的一个小问题
- 构造函数的一个小错误
- 没技术含量但需要注意的一个小问题,仍然是拷贝构造函数问题!
- c++默认构造函数的一个问题
- 关于拷贝构造函数的一个问题
- 构造函数和析构函数的小问题
- java笔记--有关构造函数的小问题
- 函数重载的一个小问题
- 虚函数的一个小问题
- 构造函数的小陷阱
- 构造函数的问题
- 构造函数的问题
- 一个在构造函数中定义变量的问题
- 自定义view 重写一个构造函数报错的问题
- javascript中的成员函数调用的一个小问题
- sscanf 函数遇到的一个小问题及其解决方法
- 关于 Numpy 数组作为函数参数的一个小问题
- 关于List的一个小问题——remove()函数
- 下载文件代码
- 电信中4G "15G断网"和3G“20G断网”的区别
- 修改Eclipse为黑色主题
- 因子和阶乘
- vs中附加项中添加OPENGL头文件
- 构造函数的一个小问题
- Table View Cells With Varying Row Heights
- 解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
- shell 大小写转换
- 写个页面检查阿里云的账号是否存在
- 女性应该如何理财?
- SDN的深入思考(1):SDN的核心本质到底是什么?
- C#多线程 定时重复调用异步线程即System.Threading.Timer类使用小例
- my machine learning