<1>、malloc是函数,c语言提供的库函数,包含在头文件<stdlib>一般在c中使用,对应的是free,不能用delete释放
C++中用new,new和delete是C++提供的内建操作符,不是函数,不需要包含头文件
int *p=new int; 或者 int *p=new int(10); 它在分配内存时可以同时进行赋值的
*p=10; //赋值
delete p; new 用完后必须用delete删除,不能用free释放
int *p=new int[10],连续分配10个int,就如在堆里做了一个数组 ,连续的10个int (用new来创建数组)
for(int i=0;i<10;i++){
p[i]=i;
}
3.<stdio>
}
}
namespace itcast{
void func( int i){
cout<<"itcast func"<<endl;
}
}
using namespace itcast; //使用命名空间
func(10);
无名命名空间(很少用):
namespace { //函数只能在这个空间内用了
void func(int i){
cout<<"zhujy func"<<endl;
}
}
<5>、如果一个类成员变量和一个全局变量重名,那么在类成员函数当中默认访问的是类的成员变量.
在类的内部访问全局标识,关键字::
如 ::a, 则这个a是全局变量a,而不是类成员a
<6>、初始化成员列表只能在构造函数使用
***const成员必须用初始化成员列表赋值 ,因为在类里是不能直接赋值的,类不占内存空间
***引用数据成员必须用初始化成员列表赋值
<7>、平常的实例对象,都是在栈里构造对象的。在堆里构造对象,用new。
man *p=new man; //调用没有对象的构造函数,在堆里面实例化一个对象(为nam类分配内存,就是实例化??)
man *p=new man("hello",100); //调用有参数的构造函数
delete p; //释放内存空间,会自动调用析构函数(malloc不会自动调用析构函数)
<8>、(20140807--4--46:00)拷贝构造函数:指向自己的引用
man::man(const man &it)
<9>、explicit man( const char *s,int i)
明确的告诉系统就要用我自己写的这个构造函数,不要自己造一个出来
C++中用new,new和delete是C++提供的内建操作符,不是函数,不需要包含头文件
int *p=new int; 或者 int *p=new int(10); 它在分配内存时可以同时进行赋值的
*p=10; //赋值
delete p; new 用完后必须用delete删除,不能用free释放
int *p=new int[10],连续分配10个int,就如在堆里做了一个数组 ,连续的10个int (用new来创建数组)
for(int i=0;i<10;i++){
p[i]=i;
}
delete [ ]p;//一个要加一个括号,告诉C++删除的是一个数组
如果想要分配的不是一个基础类型(int 等。。),如类等,只能用new来分配内存
<2>、C++支持三种头文件,1.传统的C头文件,如<stdio.h>
2.也支持<stdio.hpp>3.<stdio>
<3>、20140807--volatile关键字 C++不会帮忙自行优化程序
<4>、自己定义一个命名空间:
namespace zhujy{
void func(int i){
cout<<"zhujy func"<<endl;}
}
namespace itcast{
void func( int i){
cout<<"itcast func"<<endl;
}
}
using namespace itcast; //使用命名空间
func(10);
无名命名空间(很少用):
namespace { //函数只能在这个空间内用了
void func(int i){
cout<<"zhujy func"<<endl;
}
}
<5>、如果一个类成员变量和一个全局变量重名,那么在类成员函数当中默认访问的是类的成员变量.
在类的内部访问全局标识,关键字::
如 ::a, 则这个a是全局变量a,而不是类成员a
<6>、初始化成员列表只能在构造函数使用
***const成员必须用初始化成员列表赋值 ,因为在类里是不能直接赋值的,类不占内存空间
***引用数据成员必须用初始化成员列表赋值
<7>、平常的实例对象,都是在栈里构造对象的。在堆里构造对象,用new。
man *p=new man; //调用没有对象的构造函数,在堆里面实例化一个对象(为nam类分配内存,就是实例化??)
man *p=new man("hello",100); //调用有参数的构造函数
delete p; //释放内存空间,会自动调用析构函数(malloc不会自动调用析构函数)
<8>、(20140807--4--46:00)拷贝构造函数:指向自己的引用
man::man(const man &it)
<9>、explicit man( const char *s,int i)
明确的告诉系统就要用我自己写的这个构造函数,不要自己造一个出来