本文共 1014 字,大约阅读时间需要 3 分钟。
个人的一点小总结,本人对c++也不是很熟,所以有可能说的不是很正确 :
1.c++中不支持对 string 类直接做 %s 输出操作,须调用 c_str() 函数将 string 转化为 const char * 形 然后才可以 %s 输出
c++字符串的拼接
string name1 = "hello";
int age = 123;
char buffer[80];
const char * name = name1.c_str();
sprintf(buffer, "%s%d", name, age);
CCLOG("%s",buffer);
2.在c++中,struct与class的惟一区别在于:struct默认是public的,而class默认是private。
3.定义静态成员的格式不能重复static关键字,但必须在成员名前冠以类名加域操作符,以表示该成员的类属。如果不将其初始化,则系统将为该成员清0;
(静态成员的初始化貌似必须在类外进行:我试了下,如果直接写成这样的会报错: static int number = 0;)
4.每个派生类对象所占有的存储空间的大小等于其基类部分的所有(自:包括私有数据成员)数据成员占有的存储空间的大小与新定义部分的所有数据成员占有的存储空间大小的总和,并且前面的存储空间分配给基类部分的数据成员使用,后面的存储空间分配给新定义部分的数据成员使用。
5.你可能没见过的输出形式:
6.在声明构造函数时( Box(int h = 10,int w = 10,int len = 10) ) ,形参名可以省略,即写成:
Box(int=10,int=10,int=10); (注:我试了,=号两边无空格也是正确的)
7.自:一般来说:对于构造函数和析构函数遵循先构造的后析构,后构造的先析构 原则。但这句话并不总是正确
例如:在一个函数中定义了两个对象:
fn()
{
Student stud1;
static Student stud2;
...
}
在调用fn函数时,先调用stud1的构造函数,再调用stud2的构造函数,当fn调用结束时,stud1是要释放的(因为它是自动局部对象),因此调用stud1的析构函数。而stud2是静态局部对象,在fn调用结束时并不释放,因此不调用stud2的析构函数。直到程序结束释放stud2时,才调用stud2的析构函数。
转载地址:http://oduob.baihongyu.com/