//作者:ylotttt
//来源:http://blog.youkuaiyun.com/ylotttt/
C++中特有的:
1、内联函数
2、重载函数
3、默认参数的函数
4、结构的访问控制:
类定义中默认情况下的成员是private,而结构定义中默认情况下的成员是public的。(确切的说这是C++中类与结构的区别,而且这一部分也涉及到了面向对象的内容)。
在VC6.0下可以定义如下结构体,并申明友元函数、类。
struct test
{
public:int a;
private:int b;
protected:int c;
friend void testFuc();
}temp;
void testFuc()
{
temp.a = 3;
temp.b = 4;
temp.c = 5;
}
C/C++不同的:
5、结构对象的说明方法:
struct Savings a;(C)。
Savings a;(C++)。
C/C++中基本概念:
6、常量
C中:
常量类型
1 整形常量。
2 字符常量。
3 浮点常量。
4 枚举常量。
表现形式
1 直接以文本形式给出的(数字、字符)。
2 enum定义的。
3 define定义的(我认为预处理完后视同1。这里存在问题,预处理不进行类型检查。c中默认的都以int型来处理。define定义的东东不会加入到符号列表。注意define与inline的区别联系)
注意:const是类型限定符,修饰类型区分符(即类型,如int)。也就是说const修饰的是变量,说明此变量不可更改,如同常量一样(这里有很多人误解。其另一层含义可理解为“此变量不能通过变量名来修改其所对应的内存空间的值”。更进一步,此变量不能用其变量名做左值来修改)。如果试图修改const限定的值,所产生后果取决于具体实现(编译器)。
有的人认为(或者有的书写到)“const修饰后在程序的任意位置再不可修改”。其实这也是一种误解,不全面。“const修饰后在程序的任意位置再不可修改”是指不能用其名显示做左值来修改,编译器会检查其做左值的情况而不会关心它出现几次(个人认为)。所以其值是可以修改的,只是要耍手段,如通过访问地址修改。而这种修改与给这个const了的变量赋值是两个完全不同的概念和动作,虽然都改变了内存空间内的值(细细体会)。
C++中:
大体同上,但在C++中提倡使用const,屏弃#define的使用。
问题:
1、常量是与执行代码一起分配存储?Where?When?
2、常量分配在只读存储区?Where?When?
3、常量、全局变量、静态数据存放在全局数据区?
4、enum常量通过地址是否可修改?