347 字
2 分钟
C++ Function
2025-03-10

static#

  • 静态方法,没有this指针,不属于特定的对象。
  • 不访问这个对象的非静态成员。
class demo{
    private:
    	std::string VERSION = "v1.0.0";
    public:
    	static std::string getVersion();
}

const#

  • 承诺不会在方法内不改变对象内部的值。
  • 非const能调用const方法,const不能调用非const
class demo{
    public:
    	std::string getString() const;
}

mutable#

  • 允许在const中修改的成员变量
class demo{
    private:
    	int value;
    	mutable size_t numOfAccesses = 0;
    public:
    	int getValue() const{
            numOfAccesses++;
            return value;
        }
}

noexcept#

  • 该方法不会抛出异常
void test(int a) noexcept;

delete#

  • 显示的删除某个方法
class demo{
	public:
    	int foo(int a);
    	int foo(double a) = delete;
}  

double为参数调用foo时编译器会报错


inline#

inline int getValue(){
    ......
}

内联类似于#define,但是比使用#define更安全


virtual#

只有在基类中声明为virtual的方法才能被派生类重写

  • 建议所有方法都声明为virtual(对于现代计算机而言开销很小,Java默认使用virtual)
  • 析构函数一定要声明为virtual,否则派生类将默认调用基类的析构函数
  • 纯虚方法告诉编译器,该方法在该类中不存在定义。包含纯虚方法的类成为抽象类
class Base{
    public:
    	virtual void method();
    	virtual void method1() = 0;//纯虚方法
}

override#

class Next: public Base{
    public:
    	virtual void method() override;
}

constexpr#

  • 常量表达式,通常在编译时进行计算
constexpr int getArraySize(){return 32;}
int nums[getArraySize()]; //getArraySize()是一个常量
C++ Function
http://zaoweiceng.github.io/posts/cpp/function/
作者
静惜
发布于
2025-03-10
许可协议
CC BY-NC-SA 4.0