复制构造函数小问. 书上的程序编译错误!
#ifndef STRING_H
#define STRING_H
class String
{
public:
String( String const & );
~String();
private:
char *ptrChars;
};
#endif
#include <cstring>
#include "string.h"
String::String(String const &str )
{
ptrChars = new char[std::strlen(str.ptrChars) + 1 ];
std::strcpy( ptrchars, str.ptrChars );
}
String :: ~String()
{
delete [] ptrChars;
}
#include "string.h"
int
main()
{
String firstString("C++");
String copyofFirstString( firstString );
}
错误提示如下:
f:\learningc++\复制构造函数\main.cpp(6) : error C2664: “String::String” : 不能将参数 1 从“const char [4]”转换为“const String &”
原因如下: 无法从“const char [4]”转换为“const String”
无构造函数可以接受源类型,或构造函数重载决策不明确
string.cpp
f:\learningc++\复制构造函数\string.cpp(7) : error C2065: “ptrchars” : 未声明的标识符
正在生成代码...
自己还是不很明白...请各位赐教.
#define STRING_H
class String
{
public:
String( String const & );
~String();
private:
char *ptrChars;
};
#endif
#include <cstring>
#include "string.h"
String::String(String const &str )
{
ptrChars = new char[std::strlen(str.ptrChars) + 1 ];
std::strcpy( ptrchars, str.ptrChars );
}
String :: ~String()
{
delete [] ptrChars;
}
#include "string.h"
int
main()
{
String firstString("C++");
String copyofFirstString( firstString );
}
错误提示如下:
f:\learningc++\复制构造函数\main.cpp(6) : error C2664: “String::String” : 不能将参数 1 从“const char [4]”转换为“const String &”
原因如下: 无法从“const char [4]”转换为“const String”
无构造函数可以接受源类型,或构造函数重载决策不明确
string.cpp
f:\learningc++\复制构造函数\string.cpp(7) : error C2065: “ptrchars” : 未声明的标识符
正在生成代码...
自己还是不很明白...请各位赐教.
...全文
相关推荐
没有可用的复制构造函数或复制构造函数声明
在C++编程中,"没有可用的复制构造函数或复制构造函数声明"是一个常见的错误,通常出现在尝试复制一个对象,而该对象的类没有定义复制构造函数时。
Linux内核时间有关的API
在日常的驱动开发中难免会用到和时间打交道的API,那么本小节来学习一下和内核时间有关的一些函数。提示:以下是本篇文章正文内容,下面案例可供参考以上就是和内核时间有关的介绍,驱动开发难免会和时间打交道,这里只是列举了些简单的API,还有更多的API需要大家需了解。
C++复制控制之复制构造函数
"C++复制控制中的复制构造函数是类对象复制过程的关键,它在特定情况下被调用来完成对象的初始化和赋值。复制构造函数是一个特殊的构造函数,接收一个const引用作为参数,用于防止修改原始对象。本文将深入
构造函数c语言
理解并正确使用复制构造函数,对于避免潜在的内存泄漏和其他运行时错误至关重要。
C++中复制构造函数和重载赋值操作符总结
通过理解这些知识点,你可以更好地掌握如何在C++中安全地处理对象的复制和赋值,避免潜在的错误和性能问题。在编写类时,合理地定义和实现复制构造函数和重载赋值操作符是保证程序正确性和效率的关键步骤。


