Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何用常量值初始化常量对象的非常量属性?_C++_C++11 - Fatal编程技术网

C++ 如何用常量值初始化常量对象的非常量属性?

C++ 如何用常量值初始化常量对象的非常量属性?,c++,c++11,C++,C++11,我需要实例化类的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

我需要实例化类的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" ?
    }
};

对象本身是否为常量以及其任何类成员是否为常量是两个完全不同的主题

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

指向常量对象的指针不能用于初始化指向非常量对象的指针。你的班级成员:

my_type *v;
是指向非常量对象的指针(假定
my_type
本身不是常量类型)

因此,此指针无法初始化为指向常量对象


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

对象本身是否为常量以及其任何类成员是否为常量是两个完全不同的主题

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

指向常量对象的指针不能用于初始化指向非常量对象的指针。你的班级成员:

my_type *v;
是指向非常量对象的指针(假定
my_type
本身不是常量类型)

因此,此指针无法初始化为指向常量对象

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