gpt4 book ai didi

c++ - 如何使用 const 值初始化 const 对象的非 const 属性?

转载 作者:行者123 更新时间:2023-11-28 02:01:47 25 4
gpt4 key购买 nike

我需要实例化我类的一个 const 对象,并从 const 指针初始化它的成员指针。那可能吗?怎么做?

我有这样的东西:

class A:
public Base
{
public:
A():
v(nullptr)
{}

virtual void f() override
{}

private:
my_type *v;

friend void f(const my_type& orig)
{
// How to create a "const A" with "v == &orig" ?
}
};

最佳答案

对象本身是否常量和它的任何类成员是否常量,是两个完全不同的话题。

类的成员是否可以以特定方式初始化并不取决于类的特定实例是否为常量。

指向常量对象的指针不能用于初始化指向非常量对象的指针。你的类(class)成员:

my_type *v;

是指向非常量对象的指针(假设 my_type 本身不是常量类型)。

因此,不能将此指针初始化为指向常量对象。

包含此成员的类的某些实例是否常量不是一个因素。

关于c++ - 如何使用 const 值初始化 const 对象的非 const 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39176789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com