Chinaunix首页 | 论坛 | 博客
  • 博客访问: 289377
  • 博文数量: 111
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 816
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-04 20:35
文章分类

全部博文(111)

文章存档

2016年(1)

2015年(5)

2014年(105)

我的朋友

分类: C/C++

2014-06-10 22:06:56

1. Date d=today //通过复制函数初始化对象
  a. Date d; d=today //通过赋值运算符初始化
  //对可互相转化的对象:可通过转换构造函数->赋值运算符实现赋值
2. 常量成员对象,常量成员函数,常量对象
3.  this:成员函数有this隐式引用;常量成员函数有常量this引用,所以不能修改
4. const_cast: 把const对象转为非const对象
5. mutable:标记为一定可修改,即使是常量对象的成员对象
6. inline函数:在类内部定义的单数都是inline函数,所以尽量定义小函数
7. C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
   1、const成员:只能在构造函数后的初始化列表中初始化

     2、static成员:初始化在类外,且不加static修饰

    3、const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像static在类外初始化

  1. class base  
  2. {  
  3. public:  
  4.     base(int x=8):a(x){};//const成员在构造函数初始化  
  5.     const int a;  
  6.     static int b;  
  7.     const static int c=9;//const static成员在类内初始化  
  8. };  
  9. int base::b=9;//static成员在类外初始化,可以修改  
  10. //const int base::c=10;//也可以像static在类外初始化  

8. 类成员对象:初始化时:先类成员对象,后类对象;析构时顺序相反
9. 成员赋值:初始化赋值优先于构造函数中赋值,因为可以少构造一个空对象
10. 如果一个类有非静态成员是:a)引用,b) const,c)没有复制复制的用户定义类型,则不能生成默认的复制构造函数


11. 静态局部变量,第一次代码被调用时赋值有效,之后赋值语句无效,在程序结束时才销毁
12. 临时对象——特别注意,跟c#中完全不一样
     a. 在完整表达式结束后,被释放
     b. 错误示范
     void f(string& s1, string& s2, string& s3)
     {
         const char* cs=(s1+s2).c_str() //错误,临时对象(s1+s2)在结束时被销毁
         if (strlen(cs=(s2+s3).c_str()<8&&cs[0]=='a')  //正常,s2+s3对象在完整表达式结束后才会被销毁    
         {  us cs } //错误,cs指向的对象已经被销毁
     }
  ——最好是显示创建临时对象

阅读(523) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~