【C++】C++琐碎的知识点

来源:互联网 发布:三月软件小组 编辑:程序博客网 时间:2024/04/28 20:55

1.类不占用存储空间,它仅仅给出数据类型的说明。而对象是占用存储空间的。这点类似于int,float这种系统预定义类型,int和float不占用存储空间,但是比如:int a;a占用存储空间。

2.系统会在静态存储区给常变量分配内存单元,而普通变量是在动态存储区分配内存单元。3.const int *p=NULL;表示定义一个指向const变量的指针p。如果一个变量已经被声明为常变量,只能用指向const变量的指针指向它,而不能用一般的(指向非const变量的)指针指向它。指向常变量的指针除了可以指向常变量以外,还可以指向普通变量。此时,可以通过指针访问该变量,但是不能通过指

针改变该变量的值。

4.const int *p和int *const p的区别

#include <iostream>using namespace std;int main(){const int *p = NULL;//定义一个指向const变量的指针pconst int a = 10;//定义一个常变量p = &a;cout << "*p=" << *p << endl;int b = 100;//定义普通变量bp = &b;cout << "*p=" << *p << endl;//*p=200;错误,不能通过指针p修改p所指向的单元内容b = 200;cout << "*p=" << *p << endl;return 0;}

以上代码的指针p是指向常变量的,所以不能通过*p来修改常变量的值,哪怕指针指向非常变量,也不能修改。
#include<iostream>using namespace std;int main(){int a = 10;int b = 20;int *const p = &a;//定义const指针p并初始化指向acout << "*p=" << *p << endl;//p=&b;错误,不能改变const指针p的指向*p = 100;cout << "*p=" << *p << endl;return 0;}

第二个代码中的p指针是一个const指针,所以这个指针的指向不可以改变,但是指针所指的数据可以改变。

5.成员的可访问性可分为三类:公有的,受保护的,私有的。访问属性为公有属性的成员既可以被本类的成员函数访问,也可以在类的作用域内被其它函数访问。访问属性为受保护的成员可以被本类以及派生类的成员函数访问,但不能被类外访问。访问属性为私有的成员只能被本类的成员函数访问而不能被类外访问(类的友元函数除外)。

6.声明类时系统并不分配内存空间,而定义对象时系统会给每个对象分配内存单位,以存储对象的成员。

7.内置函数(inline函数)的机制是在编译的时候将被调用函数的代码嵌入到主调用函数的调用语句,这样可以提高了程序的执行效率。当函数的函数体很小的时候,函数调用的时间开销是非常明显的。当类中的成员函数是在类内定义的,C++系统会默认该成员函数是inline成员函数。此时无需在函数定义前面加上inline关键字。

8.在系统给实例化的对象分配存储空间,只给数据分配存储空间,而将对象的成员函数放在另外一个公共区域,无论这个类声明多少个对象,这些对象的成员函数在内存中只保留一份。

9.聚合和组合的关系:聚合关系中成员对象可以脱离整体对象独立存在,而组合关系中的部分和整体具有统一的生命周期。一旦整体对象不存在,部分对象也将不存在。



原创粉丝点击