class word{
public:
word(){cout<<"word constructure \n";}
word(int i){cout<<"word 1 constructure \n";}
};class Text{
public:
word w;
Text():w(1)
{cout<<"text constructure \n";}
};int main()
{
Text t;
}
1.自己定义的类,他自己可以隐式初始化,调用她自己的默认够着函数,但是根据实验,好像只能调用默认够着函数
2.初始化列表和成员函数的构造一共值初始化一次,如果有列表,他自己就不构造了
3.初始化列表中的元素和成员的初始化,在构造函数之前运行
问题:const static 继承 virtual
特殊成员函数 这一堆关键词混合使用的时候会发生什么情况,这个需要弄明白
静态成员的使用
#include<iostream>
#include<vector>
using namespace std;class Text{
public:
static const int a = 1; ///static 数据成员独立与该类存在
///static int b = 1; ///静态成员也不能这么初始化变量
static int b;
static vector<int> d ;///估计这次他就没有办法自己初始化了
static void f1(){cout<<"f1"<<endl;} ////成员函数没有this形参,他可以直接访问所属的类的static成员,不能使用非静态的
static void f2(){b=2;cout<<b<<endl;}
static void f4(){b++;cout<<b<<endl;}
Text(){ f4();}
///void f3(){b=3;cout<<b<<endl;}非静态函数,无法调用
//Text():a(2),b(2){} ///C++规定const静态类成员可以直接初始化,其他非const的静态类成员需要在类声明以外初始化
};///文章中解释说派生类也可以共享静态成员b,一会要试试
///静态数据成员的类型可以是所属类的类型,而普通数据成员则不可以。普通数据成员的只能声明为 所属类类型的 指针或引用。举例如下
///静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针
///静态成员函数不可以同时声明为 virtual、const、volatile函数。举例如下:class Paper:public Text{
};
int Text::b = 0;
//int Text::f1(){cout<<"f1"<<endl;}int main()
{
Text::f1();///可以直接调用
Paper::f1();///继承后也可以使用
Paper::f2();///静态成员函数可以调用静态变量
///Paper::f3();非静态函数,无法调用
Text* t = new Text[5];///可以实现计数的功能
}
C++杂分析