字符串数组的初始化问题(补充解决办法)
2011-09-27 13:02
246 查看
对于字符数组和字符串数组,对数组的整体赋值只能在初始化时进行,整体赋值不能赋值使用,而只能对数组元素一个个的赋值。
即下列:
C: char str[]={"asd"} 正确
char str[];
str="asd";错误
C++(include<string>):
string str[]={"asd","sdf"};正确
string str[];
str[]={"asd","sdf"};错误
不过这是为什么呢?
其实原因参考本博客的另外一篇文章,其实正确的方式都是拷贝运算的范畴,属于浅拷贝;但对于赋值运算的话进支持对象和对象间,即左值和左值间,会出错的。.
如果对象在申明的同时马上进行的初始化操作,则称之为拷贝运算。例如:
class1 A("af");class1 B=A;
此时其实际调用的是B(A)这样的浅拷贝操作。
如果对象在申明之后,在进行的赋值运算,我们称之为赋值运算。例如:
class1 A("af");class1 B;
B=A;
此时实际调用的类的缺省赋值函数B.operator=(A);
即下列:
C: char str[]={"asd"} 正确
char str[];
str="asd";错误
C++(include<string>):
string str[]={"asd","sdf"};正确
string str[];
str[]={"asd","sdf"};错误
不过这是为什么呢?
其实原因参考本博客的另外一篇文章,其实正确的方式都是拷贝运算的范畴,属于浅拷贝;但对于赋值运算的话进支持对象和对象间,即左值和左值间,会出错的。.
如果对象在申明的同时马上进行的初始化操作,则称之为拷贝运算。例如:
class1 A("af");class1 B=A;
此时其实际调用的是B(A)这样的浅拷贝操作。
如果对象在申明之后,在进行的赋值运算,我们称之为赋值运算。例如:
class1 A("af");class1 B;
B=A;
此时实际调用的类的缺省赋值函数B.operator=(A);
相关文章推荐
- MFC中DockPane初始化停靠换乱问题解决办法
- oracle数据库异常---SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法
- SpringMVC使用@ResponseBody输出字符串时遇到的乱码问题及解决办法
- 用CSS解决中英文混合字符串的截取省略问题的解决办法
- 用CSS解决中英文混合字符串的截取省略问题的解决办法
- ORACLE 超长字符串问题的解决办法
- 字符串数组初始化相关问题总结
- 字符数组、字符串的声明及初始化问题
- 一些小问题的解决办法(持续补充更新)
- 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法
- SpringMVC使用@ResponseBody输出字符串时遇到的乱码问题及解决办法
- 用CSS解决中英文混合字符串的截取省略问题的解决办法
- 用CSS解决中英文混合字符串的截取省略问题的解决办法
- SpringMVC使用@ResponseBody输出字符串时遇到的乱码问题及解决办法
- 字符串数组的初始化问题
- 05.头文件中定义数组的问题解决办法
- 关于字符串和byte数组在java和ios之间兼容的解决办法
- 算法学习笔记之四:巧妙运用指针解决链表、字符串、数组等问题(同向双指针VS对向双指针)
- MFC中DockPane初始化停靠换乱问题解决办法
- Base64 报错 的解决办法 (Base-64 字符数组或字符串的长度无效。, 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。)