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++ Templates》读书笔记

有三种模板参数(形参): (1)类型参数(这是使用得最多的) (2)非类型参数 (3)模板的模板参数 类型参数:   类型参数是通过关键字typename或者class引入。关键字后面必须是...

【转】<C++ Primer 5th>Template模板笔记

1.模板实例化:C++中的模板是一个函数或者类的蓝图,编写了不局限于类型的通用代码。模板定义本身不参与编译,而是编译器根据模板的用户使用模板时提供的类型参数生成代码,再进行编译,这一过程被称为模板实例...

(转)C++ primer 笔记

第1章>> << 输入输出操作符返回 输出流std::cin, std::cout本身endl输出换行,刷新与设备关联的bufferaugument 实参 paremeter 形参buit-in ...

【转】effective C++读书笔记(二)

转自:http://hi.baidu.com/a024014/blog/item/617b690ac43e8b1a95ca6ba2.html 类和函数:设计与声明条款18 :争取使类的接口完整并且最...

[转]Effective C++ 02 尽量以const, enum, inline替换#define 笔记

Effective C++ 02 尽量以const, enum, inline替换#define 笔记 本条款或许改为“宁可以编译器替换预处理器”比较好,因为或许#define不被视...

(转)C++ primer 笔记

第1章>> endl输出换行,刷新与设备关联的bufferaugument 实参 paremeter 形参buit-in type 内置类型manipulator 操纵符第2章C++是静态类型语言,编...

《Windows via C/C++》学习笔记 —— Windows 线程池 (转)

线程池(thread pool),允许有多个线程同时存在,并发执行,并且这些线程受到统一管理。   在Windows Vista中,提供了全新的线程池机制,一般这些线程池中的线程...

【转】effective C++ 笔记一

从C转向C++  条款1:尽量使用const和inline而不使用#define       #define有很多不确定的东西,eg:       #d...

【转】C++工程师面试笔记

转自牛客网一位同学的C++笔记,包括C++基础、数据结构与算法、计算机基础等,耐心看完一遍后感觉非常经典,决定转摘过来以便查阅。 链接:https://www.nowcoder.com/discuss...

C/C++求职宝典21个重点笔记(常考笔试面试点)(转)

char c = '\72'; 中的\72代表一个字符,72是八进制数,代表ASCII码字符“:”。 10*a++ 中a先进行乘法运算再自增(笔试中经常喜欢出这类运算符优先级容易混淆的输出问题)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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