【发布时间】:2017-12-11 01:56:11
【问题描述】:
//Person declaration
Class Person {
public:
Person();
const String getName() const;
private:
const String name;
};
//Person definition
#include "Person.h"
Player::Player() {
cout << "Enter name: ";
cin >> name;
}
如果我想在创建类时初始化人名,使用默认构造函数和初始化列表,但 name_ 是 const 的约束,我该怎么做?
我不相信 name 的 init 列表会起作用,因为据我所知,init 列表会在创建时设置值,并且 name 是一个 const ,此时它不再是可修改的。
所以假设我创建了一个 Person();在另一个类中,如何在该类实例的生命周期内最初将它们的名称设置为 const?
【问题讨论】:
-
我不会在构造函数中
std::cin >> name;。 -
“我不相信名称的初始化列表会起作用”它会:)。
-
快速反应的家伙!谢谢@Galik,作为另一种设置名称的方法,你会推荐什么,另一个限制是我不能使用 setter。
-
@George,您能否澄清一下初始化列表如何为此工作?我试过 Player() : name(n) { cin >> n; } 等,但我不确定这是否是正确的方法。
-
查看@The Aspiring Hacker 的回答。你可以使用构造函数的初始化列表。
标签: c++ string constructor constants