上一页 1 ··· 7 8 9 10 11 12 13 14 下一页
摘要: 编译器先解析出他对某个名称该使用哪个实例, 然后再检查实例的访问权限是否合法#include <complex>class Base1 { public: // ... protected: int ival; double dval; char cval; // ... private: int *id; // ... };class Base2 { public: // ... protected: float fval; // ... private: double dval; // ... };class Derived : public Base1 { pub... 阅读全文
posted @ 2011-08-25 09:52 lidan 阅读(208) 评论(0) 推荐(0)
摘要: Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+↑ 当前行和上面一行交互位置(同上) Alt+← 前一个编辑的页面 Alt+→ 下一个编辑的页面(当然是针对上面那条来说了) Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性 Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后) Shift+Ctrl+En 阅读全文
posted @ 2011-08-23 21:18 lidan 阅读(148) 评论(0) 推荐(0)
摘要: ////////////////////////////////////////////////////////Example 1 ////////////////////////////////////////////////////// #include <iostream.h> class CFunction { public: CFunction() { data = new char[64]; }; ~CFunction() { delete [] data; }; char *data; }; class CFunctionEx : public CFunction { 阅读全文
posted @ 2011-08-17 22:50 lidan 阅读(2044) 评论(0) 推荐(0)
摘要: 先是父类各成员的初始化, 各成员的默认构造函数, 再调用父类的构造函数,然后是各成员的初始化, 各成员的默认构造函数,然后是自己的构造函数。class a{public: a() { cout << "construct a" << endl; }};class combinebase{public: combinebase() { cout << "construct combinebase" << endl; }};class combine: public combinebase{public: co 阅读全文
posted @ 2011-08-11 11:36 lidan 阅读(448) 评论(0) 推荐(0)
摘要: 最近在整理C++知识的时候,突然想到如何在C++中实现构造函数调用构造函数的问题,常见的错误是按照如下方式来调用: 1: #include 3: class Test 4: { 5: public: 6: int m_a; 8: Test(int a) 9: {10: m_a = a;11: }13: Test()14: {15: Test(1);16: }17: };19: int main(int argc,char* argv[])20: {21: Test... 阅读全文
posted @ 2011-08-10 23:24 lidan 阅读(3882) 评论(0) 推荐(0)
摘要: 有三种友元声明可以出现在类模板中:1 非模板友元类或友元函数函数 foo() 成员函数bar()以及 foobar类都是类模板QueueItem的所有实例的友元class Foo { void bar(); }; template <class T> class QueueItem { friend class foobar; friend void foo(); friend void Foo::bar(); // ... };2 绑定的 bound 友元类模板或函数模板:在类模板 QueueItem的实例和它的友元也是模板实例之间定义了一对一的映射,对 QueueItem的每一 阅读全文
posted @ 2011-08-04 22:32 lidan 阅读(1735) 评论(0) 推荐(0)
摘要: 1,绑定给非类型参数的表达式必须是一个常量表达式,即,它必须能在编译时被计算出结果。2,非 const 对象的值不是一个常量表达式,它不能被用作非类型模板参数的实参3,名字空间域中任何对象的地址,即使该对象不是const 类型,是一个常量表达式,而局部对象的地址则不是。4, sizeof表达式的结果是一个常量表达式,所以它可以被用作非类型模板参数的实参。对于一个模板非类型参数,如果两个不同的表达式的求值结果相同,则它们被认为是等价的模板实参。在模板实参的类型和非类型模板参数的类型之间允许进行一些转换,能被允许的转换集是函数实参上被允许的转换的子集:1 左值转换:包括从左值到右值的转换,从数组到 阅读全文
posted @ 2011-08-04 21:56 lidan 阅读(693) 评论(0) 推荐(0)
摘要: ">>>"逻辑右移,左边添加0注意 char,byte和short在逻辑右移时会先转换成int,然后在int的基础上逻辑右移。long型的移位long型移位很诡异,不知道怎么回事, long l = -21474837000L; System.out.println(l); BitManipulation.pBinLong("l", l); l >>>= 3; System.out.println(l); BitManipulation.pBinLong("l", l);11111111111111 阅读全文
posted @ 2011-08-04 09:49 lidan 阅读(270) 评论(0) 推荐(0)
摘要: 操作符->class ScreenPtr { // ... private:Screen *ptr; };// 支持指针行为的重载操作符 class ScreenPtr { public: Screen& operator*() { return *ptr; } Screen* operator->() { return ptr; } //.... };ps->move( 2, 3 ); 因为成员访问操作符箭头的左操作数的类型是 ScreenPtr 所以使用该类的重载操作符该操作符。返回一个指向 Screen类对象的指针,内置成员访问操作符箭头被依次应用在这个返回值上 阅读全文
posted @ 2011-08-03 22:47 lidan 阅读(184) 评论(0) 推荐(0)
摘要: 使用初始化表和在构造函数内使用数据成员的赋值之间有什么区别:inline Account:: Account( const char *name, double opening_bal ) : _name( name ), _balance( opening_bal ) { _acct_nmbr = get_unique_acct_nmbr(); }inline Account:: Account( const char *name, double opening_bal ) { _name = name; _balance = opening_bal; _acct_nmbr = get_un 阅读全文
posted @ 2011-08-02 22:47 lidan 阅读(415) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 13 14 下一页