Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30473
  • 博文数量: 19
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 237
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-08 23:24
文章分类

全部博文(19)

文章存档

2014年(16)

2013年(3)

我的朋友

分类: C/C++

2013-07-05 13:50:12

字符指针与字符数组:
char * p = "harry";
char s[] = {H,a,r,r,y};
两者区别在于 p 是指针变量,可以被赋值为其他值,而s是常量,始终指向初始时候的值。

继承相关:
只要在派生类方法中调用基类同名方法,就必须将基类方法的全名写出来。

多态:
1.编译会在运行时确定特定调用的隐式参数类型。
2.声明虚函数的才能表现为多态。
3.注意切割是不可逆的。
B::print() using B::get_location()
D::get_location() virtual
当D调用print()时,由于D拥有自己的get_location(),因其为virtual,所以print()虽然
为B的方法,但其中的get_location却是 D::get_location()
4.重载是编译时根据参数类型来区分
5.基类中某虚函数与派生类中存在的函数名与参数都相同,则产生覆盖,运行时决定调用哪一个。


内存管理:
1.如果一个类没有默认构造函数,那么试图分配该类型的数组将产生错误;
2.调用默认构造函数时,不需要加圆括号 : String name;//已经调用默认构造函数
3.赋值运算符与拷贝构造函数功能类似,但应该考虑自赋值的问题
String& String::operator=(const String& right){
    if(this != &right){
        
    }
    return this;
}

4.使用初始化比声明+赋值更高效,因为声明+赋值使用了多次构造函数以及赋值函数
String one;
one = "Bert";
String two;
two = one;
one += "and Ernie"
不如:
String one = "Bert";
String two = one;
two += "and Ernie";
高效

5.当声明了析构函数后,应该编写拷贝构造函数,否则会出现缓冲区过早删除
因为默认拷贝构造函数会产生共享缓冲区(即传递指针)
String a = "Fred";
{
    String b = a;//如果不自定义拷贝构造函数,则默认拷贝构造函数将使缓冲区共享
}//b声明周期结束,调用析构函数,删除缓冲区,因为a与b共享,所以再调用a将出错

6.必须将基类析构函数声明为虚函数,派生类的析构函数才能被调用


阅读(382) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:编写可读代码艺术笔记(三)

给主人留下些什么吧!~~