1、在调用不带参数的构造函数来声明新的对象时,对象名后面不需要加小括号。
struct Test
{
Test ( int ) {}
Test () {}
void fun() {}
};
int main()
{
Test a(1);
a.fun();
Test b(); // 错误,正确为 Test b;
b.fun();
return 0;
}
2、类定义的实例对象是不能调用本类内部的私有成员变量和私有成员函数。
3、类定义新对象时,初始化变量的顺序要跟变量的声明顺序保持一致的。如:
#include <iostream>
using namespace std;
class obj
{
public:
// 构造函数
obj( int k ): j(k), i(j) {} // 初始化列表
void print(void)
{
cout << i << endl << j <<endl;
}
private:
// 声明私有变量
int i;
int j;
};
int main()
{
obj a(2);
a.print();
return 0;
}
在构造函数中,虽然变量 j 在变量 i 的前面初始化,且 i 由 j 初始化,但在变量声明中, i 在 j 之前被声明,所以先用 j 对 i 进行初始化,然后再用2对 j 进行初始化,所以输出为:
4、类的静态成员被当做该类类型的全局变量,对于非静态成员,每个类对象都有自己的复制品,而静态成员对每一个类的实例对象都只有一个共同的复制品,即所有对象共享访问该静态成员。
5、静态成员与全局变量相比的优势:
静态数据成员没有进入程序的全局名字空间,不存在程序中其他全局名字冲突的可能性
使用静态数据成员可以隐藏信息,因为静态成员可以使private成员,而全局对象不能。