小编voi*_*yan的帖子

C++中这个*的类型

它可能听起来很愚蠢.在C++ prime第5版P258中,它说:

默认情况下,它的类型是指向类类型的非对象版本的const指针.例如,默认情况下,Sales_data成员函数中的类型是Sales_data*const.

我可以理解,对于这个*是一个const指针,这意味着它初始化后指向的对象不能改变.但是它说:

虽然这是隐式的,但它遵循正常的初始化规则,这意味着(默认情况下)我们不能将它绑定到const对象.

但我写了以下代码,它仍然编译好:

class Test{
public:
    Test() = default;
    Test(const string &s): teststr(" ") {};
    Test(int a) : testint(a) {};
    Test(const string &s, int a): teststr(s), testint(a) {};
    string getstr() const { return teststr; };
    int getint() { return testint; };   //there is no const here
private:
    string teststr;
    int testint = 0;
};

int main(){
    Test a("abc",2);

    cout << a.getint() << " ";
    cout << a.getstr() << endl;
    cout << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:如果编译器能够很好地编译它是否存在'const',为什么它重要?然后这本书说:

毕竟,isbn的主体不会改变这个指向的对象,所以如果这是一个指向const的指针,我们的函数会更灵活. …

c++ pointers const-pointer

10
推荐指数
4
解决办法
1575
查看次数

标签 统计

c++ ×1

const-pointer ×1

pointers ×1