cppPrimer4

第三部分:类和数据抽象
十二章:类(*this指针)
1.const成员函数: double abc() const; 注意:const必须同时出现在声明和定义中,若只出现在其中一处,就会出现一个编译时错误。const在函数()之后哦。
2.使用类型别名进行简化:class ABC{ public: typedef std::string::size_type myinttype;}
3.类向前声明:class ABC; 这时候只能使用这个类的指针和引用,他的内部成员和函数是不明确的。(这样就可以编写相互依赖的类了)
4.为什么类以分号结束,因为他本身就是struct的变体,他也可以这样定义变量阿:class abc{} a , b;
5.mutable变量,可以在const函数中改变。
6.用于const对象的构造函数:
 class abc{  public: abc() const; }; | 类初始化列表 abc::abc(string book):isb(book), icout(0), recc(0.0){}
 abc::abc():icout(0), recc(0.0){}
7.const成员和引用类型成员以及没有默认构造函数的类型,必须在初始化列表进行初始化;否则编译不通过。
8.explicit来防止隐士构造转换
9.友元:
class abc{
friend class def;//这样,def就能引用abc中的私有成员了。
};
def& def::lala(abc a)
{
return def(a.height);
}


使用其他类的成员函数成为友元
class abc{
friend def& def::lala(abc&); //必须用def类::来修饰一下
};
1.static成员是仅仅类作用域的。且所有该类对象共享该static对象。(保证对象只定义一次); 只能放在声明中,不要放在定义中。以免编译器搞混,以为在cpp中定义了一个static对象。(如果包含多次不就被多次定义了么)
2.static函数成员是没有this指针的,因为this是对象,是动态的东西。而这个static函数是静态就创建好的东西了。
3.const static 成员;1.要在声明时候初始化 2.同时还必须在定义中进行定义不赋值;如下:
1.  class abc{ const static int count = 0; };  ==> 2. const int abc::count;
4.static东东不属于类对象的组成部分,属于所有类对象的共用东东。
5.mutable不可修饰const变量,因为他的的解释是互相矛盾的


十三章:复制控制 
1.具有指针成员的类,就得重写。。。
2.iostream是不允许复制的,所以复制构造函数定义为了private
3.Abc(const Abc&); 拷贝构造函数
4.赋值函数(重载):Abc& operator=(const Abc&); 一般来说,需要用到拷贝构造,都需要用到赋值函数。operator=,同时也是需要西沟函数的。 (检查对自身的复制)
5.西沟函数:~Abc();,没有返回值没有参数
6.智能指针:需要计数器的使用。就这样吧


十四章:重载操作符与转换
1.不能重载内置对象的操作符含义、不能使用默认实参、
2.操作符定义为非成员函数时,通常必须将它们设置为所操作类的友元:例如cout<<1;
3.赋值必须返回*this的引用
 struct abs{
int operator()(int val)
{
return val < 0? -val:val;
}
}


abs(1);//调用一个对象,这个对象重载了()操作符
4. operator int() const {return val;} 转换成员函数:不指定返回类型,形参表必须为空,:可以消除二义性哦



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值