使用函数c ++更改类对象

时间:2018-03-07 18:17:10

标签: c++ function class object

如何使用函数更改“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;
 }

我想改名字John。这是作为副本吗?

1 个答案:

答案 0 :(得分:1)

char* name;允许您将非const指针存储到某个字符或NUL终止的可变长度文本。因为它不是const,所以C ++编译器不允许您将其指向您不允许修改的文本,例如字符串文字(您的“John”)。

你最好添加......

#include <string>

...在您的文件上,并将name成员变量的定义更改为:

std::string name;

然后,它会将您分配的任何文本的副本存储到Person对象实例的字段中。

(一些非常古老的C ++编译器确实允许将非const字符指针指向字符串文字以与早期C标准兼容,并且如果使用命令行参数明确请求,当前编译器有时仍会支持任何尝试“通过”指针来修改文本通常会导致程序在运行时崩溃。如果您使用的教科书或参考资料建议将char*指向字符串文字,那么请更好,现代参考。)