关于初级C++,关于class,有不理解的地方,请指点
各位好:
我最近在看C++的基础书籍,昨天晚上看的class,还没看完,发现有如下地方不懂,请赐教。
一、类的成员函数,如果不是内联函数(在类外面且没声明inline),那么用这个类定义几个相同类的对象时,不同的对象是否共用一个成员函数?如果能共用的话,用析构函数析构一个对象时,相同类的其他对象怎么办?
二、在C中,定义一个struct时候,在头文件中声明后,要在c文件中写 struct _name Data; // _name是结构体名,但是我看的那本C++中,在定义struct和class时,把struct 和class给取消掉了,直接是 _name Data;我还没写过C++,在C里面试了一下是不可以,C++可以吗?
[解决办法]
第一个问题:
1. 一个类有4个特殊的函数,它们是构造函数、拷贝构造函数、拷贝赋值操作符和析构函数,按照最新的标准又多了另外两个特殊函数,不过目前常用的编译器还不支持,所以你可以暂时不去管这两个特殊函数。
2. 一般来讲除虚函数(包括纯虚函数)外,都是类级别的,也就是说这个类的所对象所公用的,从你的所提问题来看,这点你已经知道了。
3. 析构函数通常不能显式调用。显式调用析构函数会销毁对象中的成员变量,或者说让对象中的成员变量变得没有意义了,但操作系统并不会回收该对象所占用的内存。
4. 析构类的某个对象时,调用的是同样版本的析构函数,其它的对象不会因此受到影响。对于对象而言,类的成员变量才代表这个对象,而不是成员函数(虚函数除外),所以一个对象被析构时,调用的析构函数和其它对象所能调用的析构函数是一样的,但析构的东西却只是该对象中所拥有的那些类成员变量,而其它的对象中所包含的类成员变量不会受到影响。因此,一个类的某个对象被析构时,该类的其它对象不会改变。
第二个问题:
是的。C和C++在这点的确稍有不同。
[解决办法]
对象共用函数而已,但数据不同,函数也就是处理数据得到结果
[解决办法]
那么用这个类定义几个相同类的对象时,不同的对象是否共用一个成员函数?
他们是不共用的,他们都有自己的, 调用的都是对象自己的, 还有个static 函数 这个函数归类自己所有
[解决办法]
第一个问题 每个类的非静态成员都是自己的,静态成员函数是公有的
第二个问题 C++的写法和C有点不同。定义结构体和类都不需要加struct或者class
[解决办法]
1.不共用 共用的是 static成员
2.定义类时 要加class ,用类定义对象时 不需要