Emotional Code|

Nolca

园龄:6年9个月粉丝:12关注:9

C++ 语法笔记/散记

ifndef + define + endif

#pragma once即可!
如果__XXX_H__未定义,才会执行#define#endif段的代码,防止重复定义。

#ifndef __MODEL_H__ // 如果 __MODEL_H__ 未定义
#define __MODEL_H__ // 定义 __MODEL_H__
// 头文件内容
class Model {
// 类定义
};
#endif // __MODEL_H__

模板template

// size_t: unsigned int in <cstddef>
// typename T: can be omitted, compiler can auto-infer the type, usually in the last like <arg, arg..., T>
// 将DIM维向量v补全为LEN维向量,多余的部分用fill填充
// 只要`入参`与template<>内重合,都能自动推导类型,如此处的DIM,T
template <size_t LEN, size_t DIM, typename T>
vec<LEN, T> embed(const vec<DIM, T> &v, T fill = 1) { // return_type embed(&v)
vec<LEN, T> ret;
for (size_t i = LEN; i--; ret[i] = (i < DIM ? v[i] : fill));
return ret;
}

virtual

=0 纯虚函数,子类必须实现此方法,此时IShader无法被实例化?
没有=0,一般都是父类也有实现方法

struct IShader {
virtual ~IShader();
virtual Vec4f vertex(int iface, int nthvert) = 0;
// bar: barycentric coordinates 重心坐标
virtual bool fragment(Vec3f bar, TGAColor &color) = 0;
};

销毁函数 ~Class_Name();

&func_name

  • 重载运算符
  • 链式调用,超过1次调用,如MyClass.setA().setB();
class MyClass {
public:
MyClass &operator=(const MyClass &other) {
if (this != &other) {
// 执行赋值操作
}
return *this;
}
MyClass &setA(int a) {
this->a = a;
return *this;
}
};

内存

  • varname = new char[255];
  • delete[] varname;

本文作者:Nolca

本文链接:https://www.cnblogs.com/nolca/p/18677268

版权声明:本作品采用 收益分享revenue sharing 许可协议进行许可。

posted @   Nolca  阅读(3)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 ⏩intro 山姆精
  2. 2 🎸吉他 马叉
  3. 3 ☁升调 山姆精
  4. 4 🐦Flutter Virtual Riot/Madi
  5. 5 🎶纯律 山姆精
  6. 6 👻yeah~Color Bass! VR
⏩intro - 山姆精
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.