C++笔记(转)

原创 2007年10月04日 17:14:00

c++中所有的class都为public的,者与java是不一样的
在同一个类中是可以访问同类对象的私有成员的

构造函数初始化:(不要在头文件中这样写)
Person::Person():name("Jack"),age(30)
{

 ...

}

在函数定义前进行初始化

在局部函数中定义对象,分配堆空间,必须delete才会调用改对象的deconstructor
在函数中返回一个对象,最好使用全局对象或者堆空间创建的对象,如果是局部对象则紧紧是copy
光A()就相当于调用A类的构造函数用于构造一个临时对象
一下两种创建类对象是不一样的
1.先构造,在赋值操作
A a;
a=A();

2.仅是a对象的构造,后面的赋值语句没有任何意义,不进行相关操作
A a=A();
如果生成的数组对象,每个数组变量所调用的构造函数不一样,则不能在最后deconstructor之后
类似这种方法:delete []a;

protect 修饰符能被类内部使用,可以被子类内部使用
继承后的私有属性在子类还是存在的,可以通过方法进行操作,在内存中实际是存在的,只是内部类,外部不能进行直接调用

c++中继承时,可以根据修饰符进行修饰,这样对子类的可见度有所区别

c++子类中覆盖了父类的一个方法,可以用namespace修饰才可以访问

派生类使用using方法对以上问题进行解决,using并且解决了父类函数重载的函数

在生成子类的对象时,如果父类覆盖了默认的构造函数,则子类必须调用父类的覆盖后的构造函数,否则
会父类构造函数不能被调用,则子类对象不能生成

对象指针转换,如果是down casting则会出现narrow现象,转换可能不成功

只要类中有一个函数是虚函数,则其析构函数一定要修饰为虚函数!

如果设计的类以后会派生出子类,则最好都写成virtual函数

在子类中重写父类的函数,但不允许将其返回值类型进行改变!

纯虚函数就想是java中的抽象类,以及接口

c++如果继承抽象类,但没有实现所有的函数,则改类不能产生对象

派生类最后要继承于公共基类
class :virtual public student,public teacher
{

}

如果子类需要访问父类的方法,则需要加上namespace :: 方法

如果在类的方法中传入的参数是改类的父类对象,如果去直接调用改父类的数据成员(protect,private)是不允许的,但如果传入的就是改类本身的对象是可以的

cout<<是支持缓冲的

fread /fwrite 是c语言本身的功能
read / write 是操作系统的功能

ostream类中的write是二进制的


如果类中申明某个类为friend,那该类可以使用其类中的所有数据,包括private数据
友元关系仅在互相声明的类中,对继承之后的关系是不继承其父类的友元

友元无可继承性

在类中构造常量必须在构造列表中进行赋值如A():a(0)

常函数不会修改类中的数据成员的状态

在类内部是能使用static数据的,但前提初始化必须在外部进行

在static函数中是不能使用static的成员变量的,原因因为在对象都没有建立起来的时候,其成员变量肯定不可能被生成。

只有static const int a=100;是也不可以在类中直接定义的,同样在外部进行初始化

在类中是不能初始化任何变量的

c++中有一个默认的copy构造函数,但是是一个浅拷贝

重载了默认构造函数则会完全覆盖默认构造函数所作的基本类行的拷贝

写赋值操作重载,最好防止自己赋值自己,从而导致对象自己本身数据丢失的错误,故先作判断
if(this==&s)

A o3=o2;所执行的为拷贝构造函数,因为o3还没有建立起来
A o3;o3已经建立起来,所以最后调用的是操作符重载
o3=o2;

带const可以使得const和非const的参数都传入,原因是常量可以当一个变量看,但反之则不行

作为友元的双目运算符 模板 : T operator +(A &a1,A & a2)


++a A& operator ++()
a++ A operator ++(int dummy)
a++的实现
{
 A * tmp=this;
 其中数据:
 a++,b++;
 return this;

}

constructor
deconstructor
copy constructor
operator =

operator = 只能当成员函数重载
operator []只能当成员函数重载
重载中多维数组必须用(10,22)

"/":
实部:(ac+bd)/(c*c+d*d)
虚部:(bc-ad)/(c*c+d*d)
"*":
实部:ac-bd
虚部:ad+bc
"+":
实部:a+c
虚部:b+d
"-"
实部:a-c
虚部:b-d

对象序列化的简单方法,只要把对象强制类型转换成(char*)write和read即可

{
cin.peek()意思?
cin.putback()?
然后看cin.cc


}

vector 既可以使用下标进行遍历,也可以使用iterator进行遍历
set map 经常使用

在vector中存放对象时,对象一定要有默认构造函数,要支持拷贝构造函数,支持重载赋值操作

如果键值只能是唯一的,则可以用set,反之则可以用multiset

lowerbound只找到multiset中的第一个找到的set
upperbound则找到multiset中的最后一个找到的set
set与vector不同点前者根据顺序排放,后者则全部排序之后存放
容器中再放容器需要注意空格,如:vector < list<int> >
模板
template <class T>
void FunA(Array<T>&)
只要一个类方法为virtual,则析构函数就声明为virtual
析构函数可以显示调用

在类中声明的static变量在外面必须显示初始化

 

 

 

 

 

 

{
queue与vector,list有是么差别
在string前加一个大的S有何作用?
__box有何作用?

}

map以及mulitmap,如果使用iterator比如p,如果使用p->first指代的则是key,p->second指代的是value

往一个容器中存放的对象必须有正确地拷贝构造函数(如果想要深拷贝则自己重写否则有默认的拷贝构造函数),必须有没参数的构造函数,另外存放在有排序的容器比如list中则必须重载>,<,==操作符

 

java -cp target/classes:lib/jpox-enhancer-1.0.3.jar:lib/jdo.jar:lib/jpox-1.0.3.jar:lib/log4j-1.2.8.jar:lib/bcel-5.1.jar org.jpox.enhancer.JPOXEnhancer target/classes/org/jpox/tutorial/package.jdo

 

  

C++ Primer 学习笔记(持续更新......)

本笔记主要是一个记录,整理和总结一下C++学习过程中的知识点。 struct和class 区别:两个关键字都是进行类的定义。struct也可以定义类,和class定义的类唯一不同之处就在于默认的初始访...
  • u012931582
  • u012931582
  • 2017年03月12日 22:05
  • 614

C/C++ 学习笔记

以下是从右到左开始计算的(函数参数都是从右边到左边开始滴啊) cout i ", " i-- endl; printf("%d, %d", j, j--);   1.        C++...
  • TQH_Candy
  • TQH_Candy
  • 2016年08月16日 15:14
  • 722

C++学习笔记(一) 补充篇 基础语法 — 参考慕课网 值得推荐!

2016年8月23日 前段时间真的是恍然大悟,书看错了,我看的 C++ prime plus看的真心的难受,也不知道这本书到底在写什么。 2016年8月28日 一晃又过了4-5天,真快啊,发现那...
  • David_Han008
  • David_Han008
  • 2016年08月25日 16:47
  • 3078

c++程序设计 谭浩强编 菜鸟学习笔记(一)

本人交大在读研二狗,以前几乎没有任何编程经验
  • u010132435
  • u010132435
  • 2014年08月15日 21:30
  • 957

学习C++要做笔记1(引用)

一、引用 (1)什么是引用 引用是一个目标变量的别名。对一切引用的操作和对变量的直接操作是一样的。 例子:             char  *a;               ...
  • u012470913
  • u012470913
  • 2017年09月12日 15:55
  • 55

谭浩强C++ 读书笔记

C++程序设计  汇编语言/计算机语言 ...
  • calm_agan
  • calm_agan
  • 2006年05月08日 09:00
  • 3430

清华大学C++程序设计基础课程学习笔记

C++
  • CV2017
  • CV2017
  • 2017年10月11日 15:14
  • 238

【C++研发面试笔记】5. C++ STL数据结构

【C++研发面试笔记】5. C++ STL数据结构(容器)5.1 常见数据结构(容器)分类 vector:(连续的空间存储,可以使用[]操作符)快速的访问随机的元素,快速的在末尾插入元素,但是在序列中...
  • tostq
  • tostq
  • 2016年10月02日 18:12
  • 1613

[C++] 公开课全套笔记

这套笔记是我去年刚接触C++时整理的笔记,有几课的内容没有记录。希望能给初学C++的你带来一些帮助。         FM是浙大很棒的老师,虽然我OOP没能选上他的课,但是好在有公开课可以弥补一下遗憾...
  • ZJU_fish1996
  • ZJU_fish1996
  • 2016年08月12日 21:11
  • 2579

读书笔记_Effective C++_习惯C++

这是一本非常经典C++书籍,也是我在工作中发现自己C++上还有很多薄弱点的时候经常拿来充电的。这本书内容很多,讲了很多如何高效地使用C++的方法,有些地方自己也没能啃透,读过一遍后很多知识点容易忘记,...
  • John_cdy
  • John_cdy
  • 2015年05月04日 09:51
  • 2203
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++笔记(转)
举报原因:
原因补充:

(最多只允许输入30个字)