目录
只需要将该类的构造函数定义为私有private即可。(如图)

使用final关键字,使类被终结(无法被继承),但仍可创建该类的对象。(如图)

只需将该类的构造函数定义为保护protected的即可。(如图)

若将构造函数设置为private私有 => 则一个对象都定义不了。
对象可以调用拷贝构造函数给对象赋值 => 删除系统的拷贝构造函数。

A::GetA()就是创建对象,无需再赋值!!
类中的方法被调用:(1)用对象调用;(2)静态方法可以使用方法名+作用域解析符调用。
非常量引用&只能绑定左值!!返回创建好的对象:改为右值引用:&&

- class A
- {
- protected:
- static int m_num;
- public:
- A() { cout << "A:num=" << ++m_num << endl; }
- };
- int A::m_num = 0;
- static A a; //静态全局对象
- void main()
- {
- cout << "main begin!" << endl;
- }

对于C++:sizeof(A)=1!(等同于C++定义的类class中什么都没有:sizeof=1,占位符)。
对于C语言:sizeof(A)=0!
C++中的struct和类class所具有的功能相同,可以封装函数。
C语言只能在其中定义属性!
子类B本身不与基类A共享A的静态成员(各是各的)!若要在B中使用A的静态成员:使用作用域解析符即A::m_num。
- class A
- {
- public:
- A() { cout << "m_num=" << ++m_num << endl; }
- void Print() { cout << "A:num=" << m_num << endl; }
- protected:
- static int m_num;
- };
- int A::m_num = 10;
-
- class B :public A
- {
- public:
- B() { m_num++; }
- void print() { cout << "B:num=" << m_num << endl; }
- protected:
- static int m_num;//A,B中均有同名的静态成员
- };
- int B::m_num = 20;
-
- void main()
- {
- A a;
- B b;
- a.Print();
- b.print();
- }

