const对象的成员不可修改,但const对象通过指针维护的对象却可以修改

const对象只能调用const成员函数是因为const函数不会改变成员对象,这点和const对象的本意是相同的,其他函数有可能会改变成员变量,所以编译器拒绝通过调用非const函数

这里的转换是说,另建立了一个指针,而不是原来的东西,简单的来说就是通过copy,去掉了const属性(当然真实情况下并不是真正的copy),相当于创建了临时变量,而不再是原对象中的成员

class Solution {
public:
    void print(void) const
    {
        int* temp = const_cast<int*>(a);
        *temp = 5;
        cout<<k;
    }
    TreeNode* sortedListToBST(ListNode* head) {
        print();
        TreeNode* obj = new TreeNode(head->val);
        return obj;
    }
private:
    int k=3;
    int *a = &k;
};

你可能感兴趣的:(const对象的成员不可修改,但const对象通过指针维护的对象却可以修改)