恒定字符串如何在C 中起作用
How do constant strings work in C++
我有这样的代码:
class temp {
private :
char * name;
public :
temp(char * temp_name){
strcpy(name,temp_name);
cout << "Created"<<name<<endl;
}
~temp(){
cout<< "Destoyed"<<name<<endl;
}
};
int main() {
class temp person1("Jack");
class temp haha("Katy");
return 0;
}
我期望有两个单独的级别临时实例(杰克和凯蒂(。所有的构造函数和破坏者都可以正常工作。但是,我得到了如此奇怪的输出:
Create Jack
用退出代码11
完成的过程
我很确定问题在构造函数温度(char * temp_name(中有常数字符串,但无法弄清楚。
所以我的问题是,您能否解释在内存方面,在这种情况下,我无法创建2个类临时的实例?
您需要分配足够大小的缓冲区以包含传递的字符串数据并用指向此缓冲区的指针初始化name
。现在,您正在删除非初始化的指针name
获得不确定的行为。
此外,此代码甚至都不会编译,因为您试图将字符串字面的字体传递到构造函数中,希望指向非CONST合格char
的指针。您很可能正在使用相当长的时间允许这种不合格行为的Visual Studio。从VS2017开始,您应该使用/permissive-
编译以执行一致性。并将构造函数签名更改为
temp(char const * const temp_name)
相关文章:
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 尝试使用C++中的模板进行BST排序,但在使用随机字符串进行测试时不起作用
- boost::spirit::x3 中的简单字符串解析器不起作用
- 用于拆分空格字符串的程序不起作用
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- C++11+=当RHS有多个字符串或字符时,运算符不起作用
- 将字符从一个字符串简单分配到另一个字符串不起作用
- C++ 对象数组字符串输入在控制台上不起作用
- 字符串代码不起作用
- 检查字符串中的小写字符或空格.布尔值不起作用
- 恒定字符串如何在C 中起作用
- 在C 中使用Atof将字符串转换为小数不起作用
- 字符串等于不起作用 C++
- 从中间器转换字符串不起作用,出了什么问题?
- 几乎所有形式的字符串比较都在C 11中没有起作用
- 为什么strcpy()不起作用,请接受字符串作为参数
- 在字符串中找到元音不起作用
- C++将字符串写入文本文件中的行;新行问题不起作用
- int 有效,但字符串::size_type不起作用
- 排序功能不起作用(字符串比较问题)