我想知道" 虚拟基类 "是什么以及它意味着什么.
让我举个例子:
class Foo
{
public:
void DoSomething() { /* ... */ }
};
class Bar : public virtual Foo
{
public:
void DoSpecific() { /* ... */ }
};
Run Code Online (Sandbox Code Playgroud) Java有泛型,C++提供了一个非常强大的编程模型template.那么,C++和Java泛型有什么区别?
VC++生成在类声明内联函数中实现的函数.
如果我Foo按如下方式声明一个类,那么是CONSTRUCTOR和DESTRUCTOR内联函数吗?
class Foo
{
int* p;
public:
Foo() { p = new char[0x00100000]; }
~Foo() { delete [] p; }
};
{
Foo f;
(f);
}
Run Code Online (Sandbox Code Playgroud) Python使用引用计数方法来处理对象的生命周期.因此,不再使用的对象将立即被销毁.
但是,在Java中,GC(垃圾收集器)会销毁在特定时间不再使用的对象.
为什么Java选择这种策略,这有什么好处?
这比Python方法更好吗?
我想使用列引导线到IntelliJ IDE.有人知道吗?我找不到该功能的任何解决方案?
例如:

自动换行是现代文本编辑器中必备功能之一.
你知道如何处理自动换行吗?自动换行的最佳算法是什么?
更新:如果文本是几百万行,我怎么能快速进行自动换行?
更新:为什么我需要解决方案?因为我的项目必须绘制具有各种缩放级别和同时漂亮外观的文本.
已更新:运行环境是Windows Mobile设备.最大600MHz速度,内存尺寸非常小.
更新:我应该如何处理行信息?我们假设原始数据有三行.
THIS IS LINE 1.
THIS IS LINE 2.
THIS IS LINE 3.
Run Code Online (Sandbox Code Playgroud)
分词后的文字将显示如下:
THIS IS
LINE 1.
THIS IS
LINE 2.
THIS IS
LINE 3.
Run Code Online (Sandbox Code Playgroud)
我应该再分配3行吗?还是其他任何建议?
在我的大多数C++项目中,我大量使用ASSERTION语句如下:
int doWonderfulThings(const int* fantasticData)
{
ASSERT(fantasticData);
if(!fantasticData)
return -1;
// ,,,
return WOW_VALUE;
}
Run Code Online (Sandbox Code Playgroud)
但TDD社区似乎喜欢这样做:
int doMoreWonderfulThings(const int* fantasticData)
{
if(!fantasticData)
return ERROR_VALUE;
// ...
return AHA_VALUE;
}
TEST(TDD_Enjoy)
{
ASSERT_EQ(ERROR_VALUE, doMoreWonderfulThings(0L));
ASSERT_EQ(AHA_VALUE, doMoreWonderfulThings("Foo"));
}
Run Code Online (Sandbox Code Playgroud)
根据我的经验,第一种方法让我删除了许多微妙的错误.但TDD方法是处理遗留代码的非常聪明的想法.
"谷歌" - 他们将"第一种方法"与"带着救生衣走在岸边,没有任何安全防护的游泳海洋"进行比较.
哪一个更好?哪一个使软件健壮?
我正在使用TypeScript开发Win8应用程序.
编译我打字稿的代码,我添加winrt.d.ts和winjs.d.ts再使用引用它们:
<reference path="winrt.d.ts" static="true" />
<reference path="winjs.d.ts" static="true" />
Run Code Online (Sandbox Code Playgroud)
编译和构建成功但IDE的智能感觉非常慢.我只是打开winrt.d.ts并检查了文件.该文件有18,770行,这是一个非常庞大的文件,可以动态编译.
是否有任何选项或方法可以引用那些巨大的定义文件而无需再次编译lib.d.ts?
这种缓慢严重伤害了我的TypeScript选择.
更新:
在当前的编译器版本(0.8.0)上,没有解决方案.希望在不久的将来发布中获得最佳性能提升.
更新:
这是我简单的黑客攻击开发.性能.我只是创造了winrt.compact.d.ts.然后只复制实际使用的部分命名空间并保存文件.
幸运的是,file(winrt.d.ts)看起来像是从几个声明文件生成的.因此,每个命名空间都明确地与其他命 为WinRT制作紧凑版本要容易得多.
我正在学习Clojure.我仍然对语言和哲学没有很好的理解.
但我想更熟悉这门语言.因此,我已经开始阅读Clojure核心API文档,并在clojure.core/get源代码中发现了一些有趣的东西.
(defn get
"Returns the value mapped to key, not-found or nil if key not present."
{:inline (fn [m k & nf] `(. clojure.lang.RT (get ~m ~k ~@nf)))
:inline-arities #{2 3}
:added "1.0"}
([map key]
(. clojure.lang.RT (get map key)))
([map key not-found]
(. clojure.lang.RT (get map key not-found))))
Run Code Online (Sandbox Code Playgroud)
要使用给定键获取值,代码将使用clojurelang.RT/get函数.代码调用点运算符 - (. clojure.lang.RT (get map key)).
我的问题是作者为什么写(. clojure.lang.RT (get map key))而不是
(clojure.lang.RT/get map key).
有什么技术差异吗?还是有什么好处?
我想制作日历视图以支持触摸交互.所以我想构建新的自定义日历视图.我试图在视图偏移和实际日期值之间建立映射函数.
这是我的想法:如果我可以计算自基准日期以来的周数(在我的情况下,1989-12-31),很容易知道偏移量.HEIGHT_FOR_WEEK*NUM_OF_WEEK是非常简单的计算,可以知道精确的偏移量.
我的问题是:首先我从基准日期获得毫秒值.我将毫秒设置为另一个日历对象.我期望该对象的日期相同.但实际上它是不同的日期.
mBaseDateInMillis = mBaseDate.getTimeInMillis();
mAnotherDate.setTimeInMillis(mBaseDateInMillis);
/* I expect mBaseDate == mAnotherDate.
* but it was different.
*/
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
public class CalendarCoordinate {
public static final long ONEWEEK_IN_MILLISECONDS = 60 * 60 * 24 * 7 * 1000;
public Calendar mBaseDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
public long mBaseDateInMillis = 0;
public Calendar mDate = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
public int mWeekHeight = 30;
/**
* CTOR
*/
public CalendarCoordinate() {
/* Base date is 1989-12-31 0, 0, 0
* It was Sunday …Run Code Online (Sandbox Code Playgroud) 我相信TDD是最有前途的开发者之一.练习,但很容易从开发工具集中删除一个.
现在对我来说很难.但是很多开发者.似乎在日常工作中认真对待它.
每当我尝试TDD考虑所有鼓励,好处和好建议时,
但是我花了好几个小时后回到了我原来的编程习惯
运行一些简单的测试用例.
有些人说它花了一些时间来使用它因为它是练习!
我只是想知道成为TDD专家需要多长时间
如果你是一个不能没有它的开发者.
c++ ×4
java ×4
tdd ×2
abstraction ×1
algorithm ×1
android ×1
clojure ×1
constructor ×1
datetime ×1
destructor ×1
generics ×1
glossary ×1
ooad ×1
python ×1
templates ×1
typescript ×1
word-wrap ×1