函数 Tips2
来源:互联网 发布:湖北学历网络教育 编辑:程序博客网 时间:2024/05/16 17:42
1. const修饰的需要类型转换的引用,由于是const的引用,先创建一个int类型的临时变量,然后被引用给cs。
......
short s = 12;
const int &cs = s; //a temporary variable of int type will be created, as int temp = 12, so cs is a reference to tmep.
cout<<cs<<'/n'; //cs = 12, temp = 12
cout<<++s<<endl; //s = 13, temp = 12
cout<<cs<<'/n'; //cs = 12, temp = 12
........
error:不带const的引用,类型要精确匹配。
short s = 12;
int &cs = s; //error
2. 内嵌友元,需要把friend 声明和定义分开来写,否则,将会无视friend关键字。
class out
{
friend inner;
class inner
{
.......
};
};
3. C++中使用inline函数来代替预处理器宏,应为宏是C使用的,没有类的概念,同时不会进行类型检查和类型转换,inline的函数声明和定义要在一起,否则将被视为普通函数,inline关键字被忽略,inline函数是真正的函数会对形参和返回值的类型进行验证。iinline函数一般会包含在头文件中,只要同名的inline函数定义体相同,就不会出现duplicate define的错误。
在类定义体内部定义的函数--包括构造和虚构函数,被认为是inline函数,所以如果定义体内容很大的函数要注意使用inline是否合适。
C++规定,只有在类声明结束后,inline函数才能被调用,这就是说,类中的inline函数可以调用调用一个还没有被声明的该类中的成员函数。
4. #define 宏,字符串定义符(#)和标志粘贴符(##)的使用。
#define PRINT(x) cout<< #x"="<< x##qq << x <<endl
#define POSTVAR(x) int pvar##x
#define PREVAR(x) int x##pvar
string str = "Hello";
string strqq = "baibai";
PRINT(str);
PREVAR(str) = 10;
POSTVAR(str) = 100;
cout << "strpvar = " << strpvar <<endl;
cout << "pvarstr = " << pvarstr <<endl;
结果:
str=baibaiHello
strpvar = 10
pvarstr = 100
5. 全局静态对象的构造函数在进入main函数之前执行,析构函数在推出main函数之后执行。
6. 通常放在头文件中的名字,如常量,inline函数,C++中默认都是内连接的,这样连接过程中不会发生名字冲突的问题,注意,链接只引用那些在链接/装载期间有地址的成员,像类声明和局部对象是不会被链接的。
7. 对于函数(非成员函数),static和extern只是改变了函数的可见性,extern和默认的可见性是一样的,static使函数成为file scope。
对于全局的变量extern是外连接,static是内连接。对于局部变量,extern表示使用其他地方声明的变量,static不改变可见性。
8.
class Inner{};
class Base
{
static const int array1[] ;
static const long lvar = 100;
static const Inner objectInner;
//static const float fvar = 10.0; //error C2864: 'Base::fvar' : only static const integral data members can be initialized within a class
//using namespace gaoqian; //error C2059: syntax error : 'namespace'
//using gaoqian :: a; //error C2886: 'gaoqian::a' : symbol cannot be used in a member using-declaration
string getValue()
{
return "Base scope";
}
};
const int Base :: array1[] = {1,2,2};
const Inner Base :: objectInner;
static属性的非integral 和非const 和array和class的对象,需要在类外面初始化定义。只有static const integral类型才能在class内部初始化。static 可以在嵌套类中声明,但是不能在局部类中声明--函数体中声明的类。因为你没有办法定义函数中的类的静态成员变量。
因为静态成员函数没有this指针,所以静态成员函数不能使用非静态成员变量和非静态成员函数。非静态成员函数则没关系
- 函数 Tips2
- tips2
- VIM Tips2
- hibernate tips2
- Android tips2
- nodejs Tips2
- flex small tips2
- iOS开发Tips2
- iOS UserDefault tips2
- CSS---Tips2背景
- Oracle Tips2( Getting Started with orcale server)
- Tips2 好好调教你的程序(断点调试)
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- java.security.MessageDigest的使用(2),生成安全令牌!
- Tapestry 5.1教程:web.xml的配置
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中
- 去除火狐浏览器中的网页的右键限制
- java.security.MessageDigest的使用(1)!
- 函数 Tips2
- SELinux 相关应用
- browser控件的查找接口
- Struts2基本的配置
- 设置窗口标题栏左上角图标
- MySQL不能启动服务1067错误
- 制作任何应用都可以安装的扩展(火狐,雷鸟...自己写的也可以)
- 模拟鼠标点击
- 中国佛学66句震撼世界的禅语