2020.9.25-10.8面向对象程序设计C++编程语言基本准则及其具体表现

    科技2026-04-02  11

    文章目录

    一、最高准则:无二义性对最高准则:无二义性的理解准则的具体体现(1)运算符的优先级与结合性(2)标识符不能以数字开头(3)贪心规则 二、次高准则:高效性对次高准则:高效性的理解准则的具体体现(1)数组下标0索引(2)逻辑短路 三、第三准则:合乎日常习惯对第三准则:合乎日常习惯的理解准则的具体体现(1)运算的优先级(2)二维数组下标表示总行数和总列数 四、补充准则:相似相同规则对补充准则:相似相同规则的理解准则的具体体现 五、参考链接

    一、最高准则:无二义性

    对最高准则:无二义性的理解

    无二义,是c++编程语言的最高准则,同时也是所有类型编程语言的最高准则,即同一条C++语句不能同时具备两种或多种含义,每一条C++语句只能通过一种方式执行,得到唯一结果。数学中也经常用到这个原则。为了消除二义,人们会认为的规定一些准则或者将某些有二义的行为定位非法。比如运算符的优先级与结合性,先乘除后加减等。再如变量名不能以数字开头,也是为了消除二义性而设置的。

    准则的具体体现

    (1)运算符的优先级与结合性

    优先级是为了消除诸如3+4*5是应被当做(3+4)*5还是3+(4 * 5)的二义性而制定的规则。 示例代码:

    int x = 3 + 4 * 5; cout << x << endl;

    结合性是为了消除诸如x=y=z是应先执行y=z还是x=y的二义性而制定的规则。 示例代码:

    int x=1, y=2, z=3; x=y=z; cout << a << b << endl;

    (2)标识符不能以数字开头

    标识符不以数字开头的原因是:数字是一种常量,而标识符在语句中一般作为变量存在,如果存在数字开头,计算机会难以辨别是常量还是变量,无法正确区分是否建立对应的存储空间,同理,对编程者而言,程序也会变得难以看懂。

    (3)贪心规则

    贪心规则是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。由于算法得到的是问题的最优解,故可以消除存在其它非最优解的二义性。

    二、次高准则:高效性

    对次高准则:高效性的理解

    由于c++出现时,计算机的效率较低,因此需要提高语言的效率,将高效性作为c++语言的次高准则。但是随着计算机的发展,性能也越来越高,高效性的地位有所降低。高效性的具体体现:比如,数组下标选择0索引而不是1索引,这样就会减少很多减法的计算。再如,c++引入了指针、内联函数、引用,这些使得c++更加高效。

    准则的具体体现

    (1)数组下标0索引

    数组是一段连续的空间,要求a[i]就是求它的地址,然后找到它。 如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度; 如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数据所占的长度。 显然以0索引的方式可以更高效地计算。

    (2)逻辑短路

    例如当使用逻辑运算符&&时若运算符左边条件不成立,则不会对运算符右边条件进行判断,保证了程序的高效运行。 示例代码:

    int a=1,b=2,c=3; if(a>b&&b++) a++;

    由于a>b不成立,故运算符&&右边b++不会执行,b仍为2。

    三、第三准则:合乎日常习惯

    对第三准则:合乎日常习惯的理解

    这一准则是因为编程语言最终是为程序员所用的,因此符合程序员的习惯使得编程更加高效准确。

    准则的具体体现

    (1)运算的优先级

    在数学中,乘法的优先级高于加法,先计算乘法再计算加法,在C++中也是如此,符合日常习惯,给编写带来了极大方便。 示例代码:

    int x=3+4*5

    (2)二维数组下标表示总行数和总列数

    例如a[3][4]用下标3和4表示一个3行4列的矩阵,合乎日常习惯。

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

    对补充准则:相似相同规则的理解

    指的是在c++中,如果有两个不同的对象A与B,A有行为a,B有行为b。如果a与b两种行为在逻辑上具有相似性,则c++会为A额外增加一个b,同理,B也将增加一个行为a。

    准则的具体体现

    C++的三类初始化方式:等号初始化、括号初始化、列表初始化。 等号初始化:

    int k=5; int k=i;

    括号初始化:

    int k(5); int k(i);

    列表初始化:

    int j{i}; int j{5}; int j={i}; int j={5}

    括号初始化是变量与对象之间的“相似相同规则”;列表初始化是变量与数组之间的“相似相同规则”。本质上是C++将变量、对象及数组统一对待的原则的产物。

    五、参考链接

    C++编程语言的四个基本准则 https://blog.csdn.net/m0_50767528/article/details/108921077 C++编程语言的四个基本准则 https://blog.csdn.net/m0_50765373/article/details/108916778 C++编程语言的四个基本准则 https://blog.csdn.net/NlDH0GG/article/details/108940285

    Processed: 0.019, SQL: 9