关于C++编程语言的四个基本准则

C++编程语言的四个准则

一.最高准则:无二义性。

  • 对这个准则的理解
    (1).在继承时,基类之间、或基类与派生类之间发生成员同名时,将出现对成员访问的不确定性——同名二义性。

    (2).当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生另一种不确定性——路径二义性。

    (3).即一串代码不能有两种不同的解释,只能有一种解释。简单来说,是指向一A的B只能有一种含义,不可以B与C都指向A,这样对A来说就有两种含义了,计算机不知道应该取哪种含义。

    (4).不仅是C++的准则,更是所有类型编程语言的最高准则。或者说,更是任何逻辑体系的最高准则,如数学领域。

  • 准则的具体体现
    (1).运算符的优先级与结合性:

      1.优先级:是为了消除诸如3+4*5 的表达式,是应该被当作 (3+4)*5 还是3+(4*5)的二义性而设定的规则。
      2.结合性:当一个运算对象两侧运算符的优先级别相同时, 运算对象与运算符的结合顺序, C 语言规定了各种运算符的结合方向(结合性) .
    
#include<iostream>
using namespace std;
int main(){
    int x,y;
    x=3+4*5;
	y=(3+4)*5;
	cout<<x<<ends<<y<<endl;//*的优先级比+优先级别高,体现出优先性
	
    int a=1, b=2,c=3;
	y=(a = b = c);
	cout<<b<<ends;
	
	a=1, b=2,c=3;
	y=((a=b)=c);
	cout<<b<<ends;
	
	a=1, b=2,c=3;
	y=(a=(b=c));
	cout<<b;
//从上面三个输出结果来比较赋值语句的优先性
	return 0;
}
	

运行结果
*从例子可以看出:
1.优先性比+高,是优先性的体现
2.(a = b = c)等价于(a=(b=c)),说明级别相同的情况下是运算符的结合是有顺序的,是结合性的体现。

(2) 标识符不能以数字开头:这是为了方便区分变量和常量,从而便于编译器编译.
(3) 贪心规则:每个符号应该包含尽可能多的字符,也就是说,我们的编译器将程序分解成符号的方法是,从左到右一个一个字符的读入,如果该字符可能组成一个符号,那么再读入下一个字符,然后在判断已经读入的两个字符是否有可能是一个符号或者一个符号的组成部分,如果可能则继续读入下一个字符,然后重复整个过程,直到读入的字符组成的字符串已不再可能组成有意义的符号.

二. 第二高准则:高效性

(1)数组下标0索引,为了计算方便,因为如果从1索引,要多一次减法,减法的运行效率要比加法慢(绝大部分编程语言是0索引的,例如C/C++,JAVA
,Python,C#
,而matlab是1索引)。
(2)逻辑短路:逻辑短路规则为对于表达式a&&b 当a为假时,b不会计算.
(3)需要说明,并非所有语言,都有对高效性的绝对准求。高效性准则只对基础的C++语法规则有效,在STL库与模板中,已经不再是次高准则了。

三.第三高准则:合乎日常习惯

(1).程序设计语言最终是给程序员使用的。一套不合乎日常习惯的规则,会给程序员的使用带来极大的不便性,因为日常习惯的惯性是极其强大的。这样会迫使程序员放弃该语言。
(2).一套编程规则,本身就是创建一套完整的新规则,只需要让新规则自洽即可。

四.补充准则:相似相同规则

(1) C++中,如果有两个不同的对象A与B,A有行为a,B有行为b,如果a与b两种行为在逻辑上具有相似性,则C++会为对象A额外增加一个行为b,也会将对象B额外增加一个行为a。
(2).如中国人吃饭用筷子,外国人吃饭用叉子,他们交流一番后,外国人学会了用筷子,中国人学会了用叉子,然后人类的吃饭方式就统一为筷子与叉子的集合。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值