[英]Changing class object with function c++
如何使用函数更改类对象,例如“per.name”? 原型设计有必要吗? 函数调用? 这是通过值还是引用传递?
#include <iostream>
#include <string>
using namespace std;
class Person {
public:
char* name;
int age;
double weight;
double height;
};
int main()
{
Person per;
per.name = "John"; //change per.name
cout << per.name << endl;
}
我想更改名字约翰。 这是作为副本制作的吗?
char* name;
允许将非存储const
指向一些字符或NUL结束可变长度的文本。 因为它是非const
,所以 C++ 编译器不会让您将其指向不允许修改的文本,例如字符串文字(您的“John”)。
你最好加上...
#include <string>
...在您的文件之上并将name
成员变量的定义更改为:
std::string name;
然后,它将存储您分配到Person
对象实例中的字段的任何文本的副本。
(一些非常旧的 C++ 编译器确实允许将非const
字符指针指向字符串文字以与早期的 C 标准兼容,并且当前的编译器有时仍会支持,如果使用命令行参数明确请求,并尝试“写入”修改文本的指针通常会导致程序在运行时崩溃。如果您使用的教科书或参考资料建议将char*
指向字符串文字,请获得更好的现代参考。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.