- 博客(14)
- 资源 (4)
- 收藏
- 关注
原创 C++ Primer 有感(面向对象编程)
1.除了构造函数之外,任意非static成员函数都可以是虚函数。保留字virtual只在类内部的成员函数声明处出现,不能用在类定义体外部出现的函数定义上。 2.派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。 3.派生类中虚函数的声明必须与基类中的定义方式完全匹配,但有一个例外:返回对基类的引用(或指针)的虚函数。派生类中
2013-06-30 18:25:42 1373
原创 C++ Primer 有感(重载操作符)
1.用于内置类型的操作符,其含义不能改变。也不能为任何内置类型定义额外的新的操作符。(重载操作符必须具有至少一个类类型或枚举类型的操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义)2.重载操作符,操作符的优先级、结合性或操作数数目不能改变。注意:重载操作符时使用默认实参是非法的。3.重载操作符并不保证操作数的求值顺序,不再具备短路求值特性。4.作为类成员的重载函数,其形参看
2013-06-30 12:58:31 1845
原创 C++ Primer 有感(复制控制)
1.不管类是否定义了自己的析构函数,编译器都 自动执行类中非static数据成员的析构函数。 2.如果我们没有定义复制构造函数,编译器就会为我们合成一个。合成复制构造函数的行为是,执行逐个成员初始化,将新对象初始化为原对象的副本。 所谓“逐个成员”,指的是编译器将现有对象的每个非static成员,依次复制到正创建的对象。合成复制构造函数直接复制内置类型成员的值,类类型成员使用该类的复制构造函
2013-06-30 10:27:13 1362
原创 C++ Primer 有感(类)
1.在类内部,声明成员函数时必需 的,而定义成员函数则是可选的。在类内部定义的函数默认为inline。 2.const成员函数不能改变其所操作的对象的数据成员。const必须同时出现在声明和定义中,若只出现其中一处,就会出现一个编译时错误。 3.显示指定inline成员函数在类内部定义的成员函数默认是inline。显示指定inline成员函数的办法有3种:(1)类定义体内部指定inline,作为其
2013-06-29 16:53:00 1513
原创 C++ Primer 有感(顺序容器)
1.顺序容器的元素排列次序与元素的值无关,而是由元素添加到容器里的次序决定。2.顺序容器 vector 支持快速随机访问 list 支持快速插入/删除 deque 双端队列顺序容器适配器 stack
2013-06-28 11:01:26 2217
原创 C++ Primer 有感(函数)
1.函数应该在头文件中声明,并在源文件中定义。(定义函数的源文件应包含声明该函数的头文件)将提供函数声明的头文件包含在定义该函数的源文件中,可使编译器能检查该函数的定义和声明是否一致。2.既可以在函数声明也可以在函数定义中指定默认参数。但是,在一个文件中,只能为一个形参指定默认实参一次。下面的例子是错误的: //ff.hint ff ( int i=0 ); //ff.c #include "
2013-06-26 19:04:58 1796
原创 C++ Primer 有感(命名的强制类型转换)
C++四种强制类型转换的方法以及其应用场合,之前有看过这个知识点,但是,面试的时候怎么想也就没有写的很全面,于是,这里整理一下: C++中的四种强制类型转换除了具有C语言强制类型转换的功能外,还可提供更好的控制强制转换的过程;能更清晰地表明程序员的意图,程序员只有看到这样的代码,立即就能知道一个强制类型转换的目的。 C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换
2013-06-26 17:54:20 1524
原创 C++ Primer 有感(new和delete表达式)
定义变量时,必须指定其数据类型和名字。而动态创建对象时,只需指定其数据类型,而不必为该对象命名。取而代之的是,new表达式返回指向性创建的指针。1.动态创建对象的默认初始化 对于类类型的对象,用该类的默认构造函数初始化;而内置类型的对象则无初始化。string *ps = new string; //initialized to empty string int *pi = new
2013-06-26 17:18:06 1632
原创 C++ Primer 有感(标准库类型)
1.当进行string对象和字符串字面值混合连接操作时,+操作符的左右操作数必须至少有一个是string类型的:string s1= "hello"; sring s2="world"; string s3=s1 + ", "; //OK string s4 = "hello" + ","; //error string s5 = s1 + "," + "world";
2013-06-26 15:48:47 1342
原创 std::cout和printf
禁止std::cout和printf混用,在多线程环境下可能导致coredump。说明:printf和std::cout分别为标准c语言与c++中的函数,两者的缓冲区机制不同(printf无缓冲区,而std::cout有),而且对于标准输出的加锁时机也略不同:(1)printf:在对标准输出作任何处理前先加锁。(2)std::cout:在实际向标准输出打印时方才加锁。 两者存在微弱的时序差别
2013-06-26 13:58:17 8196
原创 头文件
头文件为相关声明提供了一个集中存放的位置。头文件一般包含类的定义,extern变量的声明和函数的声明。1.头文件用于声明而不是用于定义 当设计头文件时,记住定义和声明的区别是很重要的。定义只可以出现一次,而声明则可以出现多次。下列语句是一些定义,所以不应该放在头文件里: extern int ival = 10; double fica_rate;虽然ival声明为extern,
2013-06-26 13:41:42 1552
原创 内核制作
1. 清除原有配置与中间文件x86: make mrproperarm: make mrproper ARCH=arm2. 配置内核x86: make menuconfigarm: make menuconfig ARCH=arm3. 创建依赖x86: make deparm: make dep ARCH=arm CROSS_COMPILE=arm-linux-4.编译内核x86:
2013-06-19 17:29:06 1298
原创 hello 内核模块
#ifndef __KERNEL__# define __KERNEL__#endif#ifndef MODULE# define MODULE#endif#include #include #include MODULE_LICENSE("GPL");static int year=2013;MODULE_PARM(year,"i");int hello_i
2013-06-18 17:52:51 1694
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人