C++ 勘误

  列出一些可能会失误的地方   

const string *  strp 是 指向不可变字符串的一个指针,

string *const strp 是指向字符串,但该指针为不可变。

const string* const p 是指向不可变字符串的不可变指针

 

typedef string *  ms;

const ms strp ;实际应该是string *const strp ;因为const描述的是string 指针类型.

 

C++不允许定义长度为0 的数组变量,但可以调用new 动态的创建长度为0的数组;

例如 :

int i[0];// 不合法

new  int[0];//OK

虽然可以动态创建长度为0的数组,但是不允许对该数组进行解引用,因为它没有什么可用的值

但可以进行比较操作,和加减,或者减去本身,结果为0值。

 

测试C风格的字符串长度需要注意需要加1

const char * cstr="leak";

const size_t len=strlen(cstr)+1; //因为字符串最后'\0'来作为结尾,而这个空字符占用1字节。

char * c=new char[len];

 

C++中操作符

typeid

sizeof

new 

delete 

以上4个容易误解,以上4个不是函数,是C++的操作符。和* & 之类的是一个类别。

 

安全释放内存空间

例如:

int *p =new int();

delete p;

p=0; //注意这里置空指针,防止悬垂指针导致的程序的不稳定性

 

指向const 对象的指针可以指向非const对象

但指向非const对象的指针不可以指向const对象

 

函数传入数组时,并不会检查数组的长度,只会检查传入的参数是否为指针,指针类型是否匹配。

如果函数的数组形参是引用形参的话,将会检查数组长度

例如: fct(int (&narr) [10]) 引用必须带括号,因为下标操作符的优先级高于引用.

 

函数指针声明时必须用()把变量名称括起来。(*fucRef)

例如

bool (*fucRef)(int arg);

 

函数指针形参要求精确匹配,不存在转换

 

对函数指针赋值时可以不用&符 (取地址)

fucRef = fct;

等价

fucRef = &fct;

调用函数指针时可以不用*符(解引用)

fucRef(1);

(*fucRef)(1);

 

vector<string> v;

v[0];   //这里会报runtime error;

v.at(0);  //用at调用取值的话,会throw out_of_range Execption;

 

在函数中访问全局同名变量,请用:: 作用域操作符来指定 例如 ::global

访问被局部变量覆盖的类变量,用this->来明确指定

转载于:https://www.cnblogs.com/guopl/p/3466941.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
shader是计算机图形学中一种专门用于处理图形渲染的编程语言,它可以控制图像的各种属性,比如颜色、明暗度、反射等等,从而实现更加真实、精美的图形效果。然而,有些人可能对shader的概念还存在一些误解,需要进行勘误。 首先,shader并不是一个特定的文件格式,而是一种用于描述GPU的计算模型的概念。在不同的应用场景下,shader可以以不同的方式实现,比如使用高级着色语言(HLSL)或OpenGL着色语言(GLSL)等专门的编程语言。 其次,shader并不一定是像素级别的操作,它可以在各种不同的几何级别上工作,从而影响整个渲染流水线的不同阶段。通常情况下,shader被认为是由两种类型的过程组成:顶点着色和像素着色。前者负责处理几何学变换和光栅化的任务,后者则负责计算像素的颜色和别的属性。 最后,通过使用shader,我们可以实现更加真实和优美的图形效果,比如计算真实的光照、阴影和反射等,从而提升图形渲染的品质和真实性。同时,由于shader极大地增强了GPU的计算能力,它还可以被用于图形学以外的其他领域,比如流体模拟、物理模拟等。 综上所述,shader是一种非常重要的图形学编程语言,它可以在不同的几何级别上工作,从而实现各种不同的图形效果。同时,需要注意的是,shader并不是一个特定的文件格式,而是一种由多种不同的过程组成的计算模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值