编译器偷偷为我们完成和调用哪些函数?

 

一个default constructor,copy constructor,destructor(Function) .

      assignment operator and a pair of address of operator  并且全部是public的。

 那么一个空的class Empty() 相当于

      class Empty()

{

     public:

         Empty();

         Empty(const Empty& rhs);

         ~Empty();                //virtual or not   Answer non-virtual

       

        Empty & operator =(const Empty& rhs);

        Empty * operator &();  //address of operators

        const Empty* operator&() const;

}

 

只有这些函数被需要的时候,它们才会被编译器产生出来!

如果打算为内含引用或常量 成员的类支持赋值动作,必须自己定义,不能用缺省的赋值运算符。

 

有个事实就是绝对没有办法控制“不同编译单元中的非局部静态对象”的初始化次序!

什么样的变量可以称为非局部静态变量

 1,全局或名字空间变量

 2,类内的静态变量

 3,文件内的变量

问题描述:同是非局部静态对象,一个要用到另一个,那么必须保证另一个在之前被初始化了,但,编译器是无法保证这点的!如何解救呢?

  使用返回局部静态对象引用的函数代替  好处:1,保证了初始化                 2,使用时静态对象才被初始化 ,即,如果有的静态变量没有被使用,便不需付出构造和析构的成本。 //单件模式(Singleton Pattern

 

<string.h> <string> <cstring>

1,旧式的C表头文件 2,披上STD外衣的C++头文件 3,披上STD外衣的旧式C头文件 

string不是类而是个类模板,真正型别是basic_string<char>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值