C++ 顶层const和底层const

本文深入探讨了C++中const限定符的用法,解释了顶层const与底层const的区别,以及它们如何应用于指针、变量和引用。通过具体的代码示例,详细说明了const在不同场景下的行为和限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

顶层const和底层const

当我们定义指针和变量的时候,有时候希望定义成const型,就是不希望程序中改变自己定义的变量,一旦有代码试图改变定义好的const型的变量,在编译的时候就会直接报错。

指针本身也是一个变量对象,指针所指的变量也是一个变量对象。当定义const int *p = &i的时候是指针不可变还是变量i不可变呢?这就涉及大了顶层const和底层const的概念。如下的定义方式,有些是顶层const,有的是底层const:

int a = 10;
int *const p1 = &a;//pi的值不可变,a的值可变。顶层const
const int b = 20;//变量b的值初始化为20后就不再变化,顶层const
const int c = a;//正确,顶层const,c不可变
const int *p2 = &b;//p2本身的值可变,p2所指向的b不可变,底层const
const int * const p3 = &b;//靠右侧的const是在描述p3本身不可变,为顶层const,靠左侧的const描述的是p3所指的对象是否可变,为底层congst
const int &r = b;//当使用引用的时候,都是指所引用的对象是否可变,为底层const

即对于指针和普通的变量而言顶层const是指所定义的指针本身或变量本身不可变,指针的底层const指它所指的对象是否可变。引用都是指所引用的对象是否可变,为底层const。

const int a = 10;
int b = 20;
int c = a;//正确,const型可以赋值给非const型,a本身并不受影响
const int &r = b; //正确,非const的b可以被引用成const型
int &r1 = a;//错误,const型a只能被const型引用
int * const p = &a;//错误,p所指的对象是可变的,但a是const的。

一点理解就是要明确const是描述了哪个内存单元中内容不可变,要保证内存单元中的数据不变,则指向该内存单元的指针就必须是const,引用该内存单元的引用也需要是const的。

定义一个c++ class,并且定义const型的类和指针如下:

#ifndef PERSON_H
#define PERSON_H

#include <string>

class Person
{
public:
    explicit Person(std::string name) : name_(name),age_(0) {}
    void setAge(int age){age_ = age;}
    std::string getName()
    {
        return name_;
    }

private:
    std::string name_;
    int age_;
};

#endif

在主程序中定义

const Person A("Jack");
Person *B = &A;//错误
const Person *C = &A;//正确,指针C的值可变,但C所指的对象A中的内容不可变
C->setAge(10);//错误,试图改变一个不可变的内存中的内容
const Person * const D = &A;//正确
内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、COSO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析模拟,揭示了生物质炉具在实际应用中的优点挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值