C++-使用const对函数定义

使用const进行函数的定义

复制代码
/*
使用const进行定义
*/ 
#include <iostream>

using namespace std; 

class A{
public:
    A(int i = 0):m_data(i) {} 
    void print(void) const { //const表示类不能进行变化
        // ++m_data; 
        cout << m_data << endl; 
    }

private:
    int m_data; 
}; 
复制代码

const 只读模式,外部的函数对类型不进行改变

复制代码
/* 
ConstFunc使用实例 
*/ 
#include <iostream>

using namespace std; 

class A{
public:
    void func1(void) const {
        cout << "常函数" << endl; 
        // func2(); //错误 因为func1是const类型的
    }
    void func2(void) {
        cout << "非常函数" << endl; 
        m_i++; 
        func1(); 
    }
private:
    int m_i; 
}; 

int main() {
    A a; 
    a.func1(); 
    a.func2(); 
    const A a1 = a; //只读类型,外部不能改变其类型 
    // a1.m_i++; 
    a.func1(); 
    a.func2(); 
    const A* pa = &a; 
    pa->func1(); 
    
    const A& ra = a; 
    ra.func1(); 
    
}
复制代码

const 根据函数的匹配度进行匹配

复制代码
/*
构造const函数
*/ 
#include <iostream>

using namespace std; 

class A{
public:
    void func(int a = 0) const{
        cout << "常函数" << endl;         
    }
    void func(int a = 0){
        cout << "非常函数" << endl; 
    } 
private:
    int m_a; 
}; 

int main() {
    A a; 
    a.func(); 
    const A a1 = a; //const 匹配后面一个函数 
    a1.func();  
}
复制代码

 

posted @   c语言我的最爱  阅读(1319)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示