2018/11/1 C++ 学习笔记

2018/11/1 学习笔记

  • 循环语句

C++循环语句中,for 语句使用频率最高,while 语句其次,do 语句很少用。提高循环体效率的基本办法是降低循环体的复杂性。

  1. 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的 循环放在最外层,以减少 CPU 跨切循环层的次数。
  2. 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到 循环体的外面。这样才不会老是打断循环,使得编译器不能对循环进行优化处理,降低了效率。
    当N很大的时候,2法好,效率高
    N小的时候,1法好,简洁易懂
1.
for (i=0; i<N; i++) 
{ 
	if (condition) 
	DoSomething(); 
	else 
	DoOtherthing(); 
}
2.
if (condition) 
{ 
	for(i=0;i<N;i++) 
	DoSomething(); 
} 
else 
{ 
	for(i=0; i<N; i++) 
	DoOtherthing(); 
}
  • const与#define比较
    #define MAX 100       //宏常量
    const int MAX = 100;  // C++ 语言的 const 常量

const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。

不能在类声明中初始化 const 数据成员。const 数据成员的初始化只能在类构造函数的初始化表中进行。

class A 
{… 
A(int size); // 构造函数 
const int SIZE ; //不能赋值
}; 
A::A(int size) : SIZE(size) // 构造函数的初始化表 
{ 
… 
} 
A a(100);                   // 对象 a 的 SIZE 值为 100 
A b(200);                   // 对象 b 的 SIZE 值为 200 

建立在整个类中都恒定的常量,不能用 const 数据成员,应该用类中的枚举常量来实现。(它的隐含数据类型是整数,其最大值有限,且不能表示浮点数)

class A 
{… 
enum 
{ 
SIZE1 = 100,    // 枚举常量
SIZE2 = 200
};  
int array1[SIZE1];
int array2[SIZE2]; 
}; 

猜你喜欢

转载自blog.csdn.net/weixin_43580841/article/details/83660781